Pyttsx 未在 windows 10 上显示已安装的语言
Pyttsx isn’t showing installed languages on windows 10
我正在尝试使用 pyttsx3 说法语文本。但是,只有英语可用。
遵循 How to change the voice in pyttsx3?, I tried to install the French speech pack as explained here https://support.office.com/en-us/article/how-to-download-text-to-speech-languages-for-windows-10-d5a6b612-b3ae-423f-afa5-4f6caf1ec5d3 的建议。
我重新启动了计算机,现在在 windows 设置的“语音”菜单下安装了法语语音转文本模块。测试按钮有效,我听到法语的测试样本。
我尝试运行下面的代码来查看 pyttsx3 有什么可用:
import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')
for voice in voices:
print(voice, voice.id)
engine.setProperty('voice', voice.id)
engine.say("Hello World!")
engine.runAndWait()
engine.stop()
然而,我只得到以下输出:
<Voice id=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_ZIRA_11.0
name=Microsoft Zira Desktop - English (United States)
languages=[]
gender=None
age=None> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_ZIRA_11.0
我错过了什么?
我通过执行此处描述的操作找到了解决方法:
https://www.ghacks.net/2018/08/11/unlock-all-windows-10-tts-voices-system-wide-to-get-more-of-them/
以下是我执行的步骤的摘要。假定您已经下载了原问题中的语音包。
打开 regedit.exe
(Windows + R,然后键入 regedit)并导航到注册表项 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens
.
右键单击要使用的语音并选择导出。
使用文本编辑器(例如 Notepad++)打开导出的文件。
第二次复制文件中的所有文本,这样所有内容都复制两次(除了第一行 Windows Registry Editor Version 5.00
)。
在数据的第一部分,将\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens
替换为HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens
(你必须在两个不同的地方这样做)。
在第二部分(您粘贴在下面的那一部分)中,执行相同的操作,但更改 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens
(同样,需要更改两个地方)。
保存文件,关闭它,然后双击它。接受注册表修改。
重新启动计算机。
现在导出的语音可用于 pyttsx3!
不直接使用注册表的更简单方法是使用 Window Powershell(运行 作为管理员)来做与 Silver Duck 的答案相同的事情。将以下代码复制并粘贴到 Powershell 中:
$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
}
参考文献:
我正在尝试使用 pyttsx3 说法语文本。但是,只有英语可用。
遵循 How to change the voice in pyttsx3?, I tried to install the French speech pack as explained here https://support.office.com/en-us/article/how-to-download-text-to-speech-languages-for-windows-10-d5a6b612-b3ae-423f-afa5-4f6caf1ec5d3 的建议。
我重新启动了计算机,现在在 windows 设置的“语音”菜单下安装了法语语音转文本模块。测试按钮有效,我听到法语的测试样本。
我尝试运行下面的代码来查看 pyttsx3 有什么可用:
import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')
for voice in voices:
print(voice, voice.id)
engine.setProperty('voice', voice.id)
engine.say("Hello World!")
engine.runAndWait()
engine.stop()
然而,我只得到以下输出:
<Voice id=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_ZIRA_11.0
name=Microsoft Zira Desktop - English (United States)
languages=[]
gender=None
age=None> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_ZIRA_11.0
我错过了什么?
我通过执行此处描述的操作找到了解决方法: https://www.ghacks.net/2018/08/11/unlock-all-windows-10-tts-voices-system-wide-to-get-more-of-them/
以下是我执行的步骤的摘要。假定您已经下载了原问题中的语音包。
打开
regedit.exe
(Windows + R,然后键入 regedit)并导航到注册表项Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens
.右键单击要使用的语音并选择导出。
使用文本编辑器(例如 Notepad++)打开导出的文件。
第二次复制文件中的所有文本,这样所有内容都复制两次(除了第一行
Windows Registry Editor Version 5.00
)。在数据的第一部分,将
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens
替换为HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens
(你必须在两个不同的地方这样做)。在第二部分(您粘贴在下面的那一部分)中,执行相同的操作,但更改
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens
(同样,需要更改两个地方)。保存文件,关闭它,然后双击它。接受注册表修改。
重新启动计算机。
现在导出的语音可用于 pyttsx3!
不直接使用注册表的更简单方法是使用 Window Powershell(运行 作为管理员)来做与 Silver Duck 的答案相同的事情。将以下代码复制并粘贴到 Powershell 中:
$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
}
参考文献: