中文TTS失败,而英语作品

时间:2016-02-21 19:51:28

标签: c# text-to-speech

我刚刚安装了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

再次为我的代码中的同一行。

1 个答案:

答案 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将失败并显示错误。