Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System.Speech.Synthesis.SpeechSynthesizer-如何自定义语音?_C#_Text To Speech - Fatal编程技术网

C# System.Speech.Synthesis.SpeechSynthesizer-如何自定义语音?

C# System.Speech.Synthesis.SpeechSynthesizer-如何自定义语音?,c#,text-to-speech,C#,Text To Speech,SpeechSynthesizer允许通过使用 选择VoiceByHits(VoiceGender,VoiceAge)功能(据我所知)。但是如果我改变性别和声音年龄,就不会进行定制 你能解释一下原因吗?如果我做错了什么,正确的方法是什么 谢谢。根据函数的名称,我认为这是一个已安装语音的选择器。它不会以任何方式自定义语音,而是根据您指定的参数从repo中选择一个 因此,如果只安装了一个语音,他只能选择一个。这里有一个小测试程序,您可以使用它来发现安装的语音: using System; using

SpeechSynthesizer允许通过使用
选择VoiceByHits(VoiceGender,VoiceAge)
功能(据我所知)。但是如果我改变性别和声音年龄,就不会进行定制

你能解释一下原因吗?如果我做错了什么,正确的方法是什么


谢谢。

根据函数的名称,我认为这是一个已安装语音的选择器。它不会以任何方式自定义语音,而是根据您指定的参数从repo中选择一个


因此,如果只安装了一个语音,他只能选择一个。

这里有一个小测试程序,您可以使用它来发现安装的语音:

using System;
using System.Speech.Synthesis;  // Add reference to System.Speech

class Program {
    static void Main(string[] args) {
        var synth = new SpeechSynthesizer();
        foreach (var voice in synth.GetInstalledVoices()) {
            Console.WriteLine(voice.VoiceInfo.Description);
        }
        Console.ReadLine();
    }
}
我的机器上的输出:Microsoft Anna-English(美国)


这是Windows afaik附带的唯一默认语音。这当然可以解释为什么改变性别和年龄对你的机器没有影响。

也许是的,但我真的找不到任何解释如何扩展声音列表:)。你可以购买第三方声音,其中一些非常好。虽然我手头没有一个链接。也许吧,但我不太明白它是如何工作的。framework如何获取有关已安装语音的信息?当您安装语音时,安装程序会在注册表中放置有关该语音的年龄、性别等信息。框架读取注册表以查找语音数据。(在C++中,您要查找的接口是ISPOBJJToToCK,MS实现使用注册表。其他TTS引擎将有自己的iPoBJJToTebug实现,可能不使用注册表。)是否可以获得更多的语音(西班牙语,…)?