【问题标题】:How do I add a voice / language to speechSynthesis?如何将语音/语言添加到 SpeechSynthesis?
【发布时间】:2018-05-02 22:43:25
【问题描述】:

当我在 Chrome 中运行 speechSynthesis.getVoices() 时,我会得到一个可能的声音列表。该列表会根据计算机和 Chrome 版本而有所不同。

有什么方法可以扩展支持并添加更多声音?

我觉得这可以通过要求用户下载他们选择的语言的语音文件来完成。有这样的文件吗?

编辑:

这需要适用于 Windows 和 Mac 计算机。

它还需要简单,因此没有脚本或任何需要广泛技术知识的东西。我希望有一个“下载和安装”类型的东西

【问题讨论】:

    标签: javascript text-to-speech voice speech-synthesis webspeech-api


    【解决方案1】:

    如何从 MICROSOFT EDGE 向 CHROME 和 Firefox 添加更多声音(仅限 Windows 10 秋季创建者更新或更高版本)

    你应该先在show available voice on browser使用显示列表语音测试

    chrome有本地和服务器语音,edge有本地并且可以下载更多,firefox除了windows registy锁定的只有3个支持的语音之外什么都没有。

    这是解锁的脚本:

    如果您不确定如何运行 powershell 脚本:

    点击开始

    搜索“Powershell”

    启动 Powershell(因为这是编辑 LocalMachine 密钥,您需要以管理员身份运行)。将脚本复制并粘贴到控制台中。按回车键。

    $sourcePath = 'HKLM:\software\Microsoft\Speech_OneCore\Voices\Tokens' #Where the OneCore voices live
    $destinationPath = 'HKLM:\SOFTWARE\Microsoft\Speech\Voices\Tokens' #For 64-bit apps
    $destinationPath2 = 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens' #For 32-bit apps
    cd $destinationPath
    $listVoices = Get-ChildItem $sourcePath
    foreach($voice in $listVoices)
    {
    $source = $voice.PSPath #Get the path of this voices key
    copy -Path $source -Destination $destinationPath -Recurse
    copy -Path $source -Destination $destinationPath2 -Recurse
    }
    

    在我的示例机器上运行它并重新启动后,api 可以使用以下声音

    微软大卫桌面; 微软 Zira 桌面; 微软 Zira 移动; (与桌面对应) 微软标记移动;

    我发现这些声音优于桌面变体,而且多样性总是很好

    重启后你可以在这里测试你的新声音:show available voice on browser

    在这里我可以有 10 个声音而不是以前的 3 个声音,在 Firefox 上。即使我可以从 Windows 语言中安装 Microsoft An 越南语语音,而我的 Firefox 可以将越南语读取为边缘。

    来源reddit.com

    【讨论】:

    • 为什么/如何工作?我还需要一些更简单、更通用的东西。我不能要求用户编写脚本。而且我的大多数用户都在 Mac 上
    • 我不会用 Mac,抱歉帮不上忙
    【解决方案2】:

    speechSynthesis.getVoices() 将返回一个可以使用的 SpeechSynthesisVoice 对象数组。


    此列表由本地语音和浏览器将从服务器获取的语音组成,因此会因操作系统和浏览器而异。每个 SpeechSynthesisVoice 对象都有一个布尔“localService”属性,让您知道它是由操作系统还是浏览器提供的。


    要获得更多本地语音,用户需要从其操作系统的控制面板/设置中下载更多语音包。


    例如,在 Windows 上,在语音设置下(不要与语音识别应用程序混淆)有一个“管理语音”部分,用户可以在其中从语言列表中选择要下载的语音包和方言。一键下载并安装。每个语音包将包含几个语音。



    请注意,一旦调用了 speechSynthesis.getVoices() 函数,数组将填充函数调用时可用的声音。为了将新下载的声音包含在数组中,用户需要在浏览器中刷新页面,并且可能还需要关闭并重新打开浏览器和/或删除缓存。

    【讨论】:

      猜你喜欢
      • 2015-11-30
      • 2012-06-18
      • 1970-01-01
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多