c# - 更改文本到语音语音的性别

标签 c# .net text-to-speech

<分区>

我想为我的交互式训练集制作一个文本转语音程序。我使用了 System.Speech 库,但声音始终是女性。我希望有些句子用男声朗读,有些句子用女声朗读。 (这两个声音是我唯一需要的。)

我使用的是 Windows 8 Pro 和 Visual Studio 2010。我只能看到一个语音包,即 Microsoft Zira Desktop。

我的代码如下。如何配置使用男声?

SpeechSynthesizer synth = new SpeechSynthesizer();
synth.Rate = 1;
synth.Volume = 100;
synth.SelectVoiceByHints(VoiceGender.Male,VoiceAge.Adult);
synth.SpeakAsync(label18.Text);

最佳答案

您首先需要知道安装了哪些语音,您可以通过 SpeechSynthesizer 类的 GetInstalledVoices 方法来完成此操作: http://msdn.microsoft.com/en-us/library/system.speech.synthesis.speechsynthesizer.getinstalledvoices.aspx

一旦你确定你已经安装了男声,那么你可以简单地通过 SelectVoiceByHints 切换 看: http://msdn.microsoft.com/en-us/library/ms586877

using (SpeechSynthesizer synthesizer = new SpeechSynthesizer())
{
    // show installed voices
    foreach (var v in synthesizer.GetInstalledVoices().Select(v => v.VoiceInfo))
    {
        Console.WriteLine("Name:{0}, Gender:{1}, Age:{2}",
          v.Description, v.Gender, v.Age);
    }

    // select male senior (if it exists)
    synthesizer.SelectVoiceByHints(VoiceGender.Male, VoiceAge.Senior);

    // select audio device
    synthesizer.SetOutputToDefaultAudioDevice();

    // build and speak a prompt
    PromptBuilder builder = new PromptBuilder();
    builder.AppendText("Found this on Stack Overflow.");
    synthesizer.Speak(builder);
}

进一步解释请看这里: how I can change the voice synthesizer gender and age in C#?

关于c# - 更改文本到语音语音的性别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24494112/

相关文章:

c# - EFCore5,使用 FromSqlRaw 和 [Owned] 属性

c# - 如何在 ASP.NET ListView ItemTemplate 中返回 HTML?

c# - 如何从 Vita 的后触摸板获取输入数据?

c# - 具有 3 位数字或 4 个字母数字字符的正则表达式 C#

c# - 在 x86 系统上编译 C# .NET x64 二进制文件

c# - 在哪里可以找到 C# 的 ICQ 库?

java - Android Studio 中的 TextToSpeech 未被调用/无法工作

android - 如何在文本转语音中使用印地语(印度母语)?

.net - 如何平衡和并行处理多个顺序数据流

javascript - 如何在语音合成中改变声音?