文本合成语音知识点:
-
使用语音密钥和位置/区域创建 SpeechConfig
var config = SpeechConfig.FromSubscription(key,location/region); //返回一个配置实例SpeechConfig -
config.SpeechSynthesisLanguage = 语言类型
-
config.SpeechSynthesisVoiceName = 声音类型
-
将语音合成到文件中:
using var audioConfig = AudioConfig.FromWavFileOutput(“路径/file.wav”);(using 语句会自动释放非托管资源,导致对象在释放后超出范围。)
创建AudioConfig 以使用 FromWavFileOutput() 函数自动将输出写入 .wav 文件 -
合成到扬声器输出:
using var synthesizer = new SpeechSynthesizer(SpeechConfig, AudioConfig); //创建SpeechSynthesizer对象,
用SpeakTextAsync(“string”)方法可执行语音合成和写入文件
如果省略AudioConfig参数,则合成的语音将直接输出到扬声器 -
获取内存中流形式的结果:
如果将AudioConfig参数设置为null (默认不会在当前处于活动状态的输出设备上播放音频)
将结果保存到 result变量中,然后使用AudioDataStream.FromResult(result)从reslut中获取流
7.自定义音频格式(音频文件类型,采样率,位深度): config.SetSpeechSynthesisOutputFormat(合成输出格式id);
8.使用SSML自定义语言特征:在项目根目录为SSML创建一个新的XML文件。根元素,使用元素中的name
参数来改变语音。更改语音合成请求以引用XML文件,将SpeakTextAsync()改成SpeakSsmlAsync(),参数为字符串,所以先使用
File.ReadAllText() 加载字符串形式的 SSML 配置。(不使用SSML改变语音->3)
- SSML 调整讲话风格:
<mstts:express-as style="发音语气" styledegree="发音强度" role=""></mstts:express-as>
styledegree 指定更强或更柔和的风格(仅支持中文神经语音)。调整 role 参数,使语音模拟不同的年龄和性别(zh-cn-XiaomoNeural
zh-cn-XiaoxuanNeural)。
- 调整讲话语言:
<lang xml:lang="语言类型">句子</lang>(不同地区)
- 添加或删除中断/暂停:
使用元素 break 可在单词之间插入暂停(或中断),或者防止文本转语音服务自动添加暂停。
<break strength="指定暂停的相对持续时间" />
<break time="暂停的绝对持续时间" />
- 添加语音(仅适合输入文本的开头或结尾,或者两个相邻句子的分界处):
<mstts:silence type="添加静音的位置" value="静音的时间"/>
-
指定段落和句子:
p 和 s 元素分别用于表示段落和句子 -
使用音素改变发音:
ph 元素用于 SSML 文档中的发音。 ph 元素只能包含文本,而不能包含其他元素
<phoneme alphabet="string" ph="string"></phoneme>
alphabet:指定在 ph 属性中合成字符串发音时要使用的音标。 指定音标的字符串必须以小写字母指定。
ph:一个字符串,包含用于在 phoneme 元素中指定单词发音的音素。 如果指定的字符串包含无
法识别的音素,则文本转语音 (TTS) 服务将拒绝整个 SSML 文档,并且不会生成文档中指定的任何语音输出。
-
使用自定义词典改善发音*:
有时文本转语音服务无法准确地根据字词发音。 例如,公司的名称、医学术语或表情符号。 开发人员可以使用 phoneme 和 sub
标记来定义采用 SSML 朗读单个实体的方式。 但是,如果需要定义朗读多个实体的方式,则可以使用 lexicon 标记创建自定义词典。 -
调整韵律:
prosody 元素用于指定文本转语音输出的音节、调型、范围、速率、持续时间和音量的变化。
prosody 元素可包含文本和以下元素:audio、break、p、phoneme、prosody、say-as、sub 和 s。
<prosody pitch="指示文本的基线音节" contour="value" range="文本音节范围" rate="讲出速率"
duration="读取文本时应该消逝的时长" volume="语音的音量级别"></prosody>
- 更改语速:
<prosody rate="+30.00%"></prosody>
- 更改音量:
可以在单词或句子级别对标准语音应用音量变化。 只能在句子级别对神经语音应用音量变化。
<prosody volume="+20.00%"></prosody>
- 更改音高:
可以在单词或句子级别对标准语音应用音节变化。 只能在句子级别对神经语音应用音节变化。
<voice name="en-US-ChristopherNeural"></voice>
- 更改音高升降曲线:
<prosody contour="(60%,-60%) (100%,+80%)" ></prosody>
- say-as 元素:
say-as 是一个可选元素,指示元素文本的内容类型(例如数字或日期)
<say-as interpret-as="指定文本内容类型" format="digit string" detail="string"> <say-as>
22.添加录制的视频:
<audio src="音频路径"/></audio>
- 添加背景音频:
<mstts:backgroundaudio src="音频位置" volume="指定背景音频文件的音量"
fadein="背景音频淡入的持续时间" fadeout="背景音频淡出的持续时间"/>