【问题标题】:System.Speech.Synthesis.SpeechSynthesizer - how to customize the voice?System.Speech.Synthesis.SpeechSynthesizer - 如何自定义语音?
【发布时间】:2011-03-03 22:59:49
【问题描述】:

SpeechSynthesizer 允许使用 SelectVoiceByHints(VoiceGender, VoiceAge)function(据我所知)。但是,如果我更改性别和语音年龄,则不会发生自定义。

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

谢谢。

【问题讨论】:

    标签: c# text-to-speech


    【解决方案1】:

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

    所以,如果只有一个声音,他只能选择那个。

    【讨论】:

    • 是的,也许吧,但我真的找不到任何解释如何扩展声音列表:)。
    • 可以买第三方配音,有的真的挺不错的。不过我手头没有链接。
    • 也许吧,但我不太明白它是如何工作的。框架如何获取有关已安装声音的信息?
    • 安装语音时,安装程​​序会在注册表中放置语音的年龄、性别等信息。框架读取注册表以查找语音的数据。 (在 C++ 中,您要查找的接口是 ISpObjectToken,MS 实现使用注册表。其他 TTS 引擎将有自己的 ISpObjectToken 实现,可能不使用注册表。)
    【解决方案2】:

    这是一个小型测试程序,您可以使用它来发现已安装的声音:

    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 - 英语(美国)

    这是 Windows afaik 附带的唯一且唯一的默认语音。这当然可以解释为什么改变性别和年龄不会对您的机器产生影响。

    【讨论】:

    • 是否有可能获得更多的声音(西班牙语,...)?
    猜你喜欢
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多