12

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

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

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

编辑:

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

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

4

2 回答 2

7

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

您应该首先在以下位置使用显示列表语音测试:在浏览器上显示可用语音

chrome 有本地和服务器语音,edge 有本地和可以下载更多,firefox 没有别的,只有 3 个支持的语音被 windows registy 锁定。

这是解锁的脚本:

如果您不确定如何运行 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 移动;(与桌面版相同)Microsoft Mark Mobile;

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

重启后你可以在这里测试你的新声音:在浏览器上显示可用的声音

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

来源reddit.com

于 2017-11-25T12:06:47.347 回答
2

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


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


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


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



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

于 2021-10-06T14:03:19.777 回答