列举语音[Voices]
翻译说明:由于这个部分涉及到了Delphi编写的简单程序,将其换成C#实现,有些不必要的说明不按照原文翻译,基本上是按照原文复述

本节目标:调整朗读语音,调整语音频率和音量
代码环境设定:两个TrackBar代表语音频率和音量,trackBarRatetrackBarVolume,一个ComboBox选择朗读语音,comboBoxLanguage
PS:朗读语音,可能会不明白朗读语音的意思,就是在控制面板-语音-文字语音转换-"语音选择"中的项,比如Microsoft Mary,Microsoft Sam等等

SpVoiceClass类中GetVoices函数原型如下

SAPI 5.1 语音合成的列举语音引擎public virtual ISpeechObjectTokens GetVoices(string RequiredAttributes, string OptionalAttributes);

该函数返回一个ISpeechObjectToken集合ISpeechObjectTokens,ISpeechObjectToken描述了每个朗读语音
函数两个参数均为对所得到集合的限制,第二参数为对第一参数的补充,比如使用

SAPI 5.1 语音合成的列举语音引擎GetVoices('Gender = male''')

就会得到男声集合
对于这些参数,一般有如下参数:Name,Vendor,Age,Gender,Language[有没有更多的不知道,翻过SAPI的帮助也没找到相关说明]
调用以下语句作以说明

SAPI 5.1 语音合成的列举语音引擎            ISpeechObjectToken sot = svc.GetVoices(String.Empty, String.Empty).Item(0);
SAPI 5.1 语音合成的列举语音引擎            System.Diagnostics.Trace.WriteLine(sot.GetAttribute(
"Name"));
SAPI 5.1 语音合成的列举语音引擎            System.Diagnostics.Trace.WriteLine(sot.GetAttribute(
"Vendor"));
SAPI 5.1 语音合成的列举语音引擎            System.Diagnostics.Trace.WriteLine(sot.GetAttribute(
"Age"));
SAPI 5.1 语音合成的列举语音引擎            System.Diagnostics.Trace.WriteLine(sot.GetAttribute(
"Gender"));
SAPI 5.1 语音合成的列举语音引擎            System.Diagnostics.Trace.WriteLine(sot.GetAttribute(
"Language"));

输出中会显示

SAPI 5.1 语音合成的列举语音引擎Microsoft Mary
SAPI 5.1 语音合成的列举语音引擎Microsoft
SAPI 5.1 语音合成的列举语音引擎Adult
SAPI 5.1 语音合成的列举语音引擎Female
SAPI 5.1 语音合成的列举语音引擎
409;9

其中409;9代表该语音支持409[英语]和9[...]语言
[这里原文提到了申请ISpeechObjectToken实例的垃圾处理的问题,由于C#的垃圾处理机制,不翻译了]

必要函数介绍完了,下面是完成目标的代码,很简单,一些没说到的写在了注释里

SAPI 5.1 语音合成的列举语音引擎        SpVoiceClass svc = new SpVoiceClass();
SAPI 5.1 语音合成的列举语音引擎        
private void button1_Click(object sender, EventArgs e)
        }

相关文章:

  • 2022-02-12
  • 2021-06-26
  • 2021-11-17
  • 2021-12-31
  • 2021-09-09
  • 2021-11-17
  • 2021-12-04
猜你喜欢
  • 2021-12-19
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-17
相关资源
相似解决方案