Microsoft.Speech.Synthesis - 中文说错误(zh-CN,HuiHui)

时间:2017-07-14 11:01:08

标签: c# text-to-speech speech-synthesis


似乎与中文(慧慧)的微软语音合成问题仍然存在 经过一些网上研究,很少有人尝试修复它,我找不到任何解决方案。

设置

Windows 10 (x32) (tested on x64 too)
SDK 11
Visual Studio 2017

错误

InnerException = {"Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))"}
Message = "Speak error '8000FFFF'."
Source = "Microsoft.Speech"

麻烦的代码

using Microsoft.Speech.Synthesis;

using (var ss = new SpeechSynthesizer())
{
  ss.SetOutputToWaveFile("output.wav");
  ss.SelectVoice("Microsoft Server Speech Text to Speech Voice (zh-CN, HuiHui)");
  ss.Speak("我喜欢和很多珍珠奶茶"); // speak error here
}

此代码使用英语(en-US,Helen)完美运行。


修复尝试失败

Download "chsbrkr.dll" & "chtbrkr.dll"
Add it to "Program Files((x86))\Common Files\Microsoft Shared\Speech\TTS\v11.0"



有人以某种方式成功运行此脚本还是找到了替代方案?
谢谢。



以前发布在同一主题上

Chinese TTS fails, while English works
TTS for Chinese is throwing SAPI ERROR E_FAIL
ASP.Net and Microsoft.Speech error with Chinese

2 个答案:

答案 0 :(得分:0)

尝试注册这两个dll“ chsbrkr.dll”和“ chtbrkr.dll”。

尝试以下步骤并检查-

1)将两个dll粘贴到“ C:\ Windows \ System32”目录中。如果您使用的是64位操作系统,请将这两个dll也粘贴到“ C:\ Windows \ sysWOW64”中(复制需要管理员特权)。

2)在命令提示符下,使用以下命令在系统中注册两个dll(以管理员身份运行)

  1. %windir%\ System32 \ regsvr32.exe / u Chsbrkr.dll
  2. %windir%\ SysWoW64 \ regsvr32.exe / u Chsbrkr.dll
  3. %windir%\ System32 \ regsvr32.exe / i Chsbrkr.dll(您可能会在此步骤看到错误,可以忽略)
  4. %windir%\ SysWoW64 \ regsvr32.exe / i Chsbrkr.dll(您可能会在此步骤看到错误,可以忽略)

  5. %windir%\ System32 \ regsvr32.exe / u Chtbrkr.dll

  6. %windir%\ SysWoW64 \ regsvr32.exe / u Chtbrkr.dll
  7. %windir%\ System32 \ regsvr32.exe / i Chtbrkr.dll(您可能会在此步骤看到错误,可以忽略)
  8. %windir%\ SysWoW64 \ regsvr32.exe / i Chtbrkr.dll(您可能会在此步骤看到错误,可以忽略)

执行完此操作后,尝试重新启动系统,然后尝试在出现“说出错误”的地方运行应用程序。

希望这可以解决问题。

答案 1 :(得分:-1)

您好,当您使用excel 2013并尝试在visual basic中创建一个宏

时,会出现类似的错误

我正在尝试下一个代码:

Sub Main()

Dim speech As New SpVoice
Dim i As Long
Dim oFileStream As New SpFileStream
Const SAFT48kHz16BitStereo = 30
Const SSFMCreateForWrite = 3 

对于i = 1到5

Set speech.Voice = speech.GetVoices.Item(3)
speech.Speak (Cells(i, 6))
Application.Wait (Now() + TimeValue("00:00:02"))

接下来我

结束子

error seen

table of words