我刚刚安装了Microsoft语音SDK 11,并为英语和中文添加了2种不同的运行时语言。
英语似乎运行良好,虽然中国人抛出了这个错误
System.InvalidOperationException
附加信息
Speak error '80004005'
为行
synth.Speak(s);
在以下代码中
using System;
using Microsoft.Speech.Synthesis;
namespace SampleSynthesis
{
class Program
{
static void Main(string[] args)
{
speakString(0, "Hello, I'm TTS.");
}
static void speakString(int i, String s)
{
// Initialize a new instance of the SpeechSynthesizer.
SpeechSynthesizer synth = new SpeechSynthesizer();
// Select a voice.
switch (i)
{
case 0:
synth.SelectVoice("Microsoft Server Speech Text to Speech Voice (en-US, ZiraPro)");
break;
case 1:
synth.SelectVoice("Microsoft Server Speech Text to Speech Voice (zh-CN, HuiHui)");
break;
}
// Configure the audio output.
synth.SetOutputToWaveFile(@"C:\Users\David\Desktop\TTStest\test.wav");
synth.Speak(s);
}
}
}
在另一个问题中,我发现了answer, 这表明在(自??)Windows 8.1中缺少关键文件, 但没有说明如何获得这些的方法。
我目前正在使用64位版本的Windows 10。
编辑:我下载了chsbrkr.dll和chtbrkr.dll文件并获得以下新错误
An unhandled exception of type 'System.InvalidCastException' occurred in Microsoft.Speech.dll
再次为我的代码中的同一行。
答案 0 :(得分:0)
由tofutim发布:https://stackoverflow.com/a/28042294/1212314
在Windows 8.1和Windows 8.0之间,删除了两个对使用Server Speech API至关重要的文件。这些是chsbrkr.dll和chtbrkr.dll,它们将位于Windows 8.0的Windows目录中。根据您的SDK和Windows 8.0版本(x86 vs x64),从Windows中选择x86 vs x64版本也很重要。例如,在使用32位dll的64位Windows 8.1环境中,您应该将这两个文件放在
中C:\ Program Files(x86)\ Common Files \ Microsoft Shared \ Speech \ TTS \ v11.0
希望微软能解决这些问题(虽然我被告知他们不会)或正式允许分发(祝你好运......)。
顺便说一句,你不应该在Windows XP到Windows 8.0中看到这个错误。
更新。我相信这些文件用于将中文分解为TTS来处理的块。没有它们,中文TTS将失败并显示错误。