如何向speechSynthesis添加语音/语言?

14
当我在Chrome中运行speechSynthesis.getVoices()时,我会得到一份可能的语音列表。该列表因计算机和Chrome版本而异。
有没有办法扩展支持并添加更多语音?
我认为可以通过要求用户下载其选择语言的语音文件来实现。这样的文件存在吗?
编辑:
这需要在Windows和Mac计算机上都能够工作。
它还需要简单易行,所以不要使用任何需要广泛技术知识的脚本或其他东西。我希望它是“下载和安装”类型的。
2个回答

10

如何将Microsoft Edge的语音添加到Chrome和Firefox(仅适用于Windows 10秋季创作者更新或更高版本)

首先应该使用显示浏览器上可用语音列表测试:show available voice on browser

Chrome有本地和服务器语音,Edge有本地语音并可以下载更多,Firefox除了3个由Windows注册表锁定的支持语音外没有其他内容。

以下是解锁的脚本:

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

点击开始

搜索“PowerShell”

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

$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:

Microsoft David Desktop; Microsoft Zira Desktop; Microsoft Zira Mobile(与桌面版相同); Microsoft Mark Mobile;

我认为这些语音比桌面版本优秀,并且变化多样总是好的。

你可以在重启后在此处测试新语音: 在浏览器上显示可用语音

在火狐上,我现在可以使用10种语音而不是之前的3种。我甚至可以使用来自Windows语言的Microsoft An安装越南语音,我的火狐可以像Edge一样读取越南语。 Microsoft An List voice

来源 reddit.com


为什么/如何运作?同时我需要更简单和更通用的东西。我不能要求用户编写脚本。而且我的大多数用户都在Mac上。 - Merlin -they-them-
抱歉,我不使用Mac,无法提供帮助。 - Hiep Tran

2

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


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


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


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



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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接