文本合成语音知识点

本文详细介绍了如何利用SSML(Speech Synthesis Markup Language)进行语音合成,包括设置语言和声音类型、合成到文件或扬声器、调整讲话风格、语言、中断和节奏,以及使用自定义词典和韵律控制。通过SSML,开发者可以实现对语音合成的精细控制,如更改音速、音量、音高和添加背景音频等,从而提高语音合成的自然度和个性化。
摘要由CSDN通过智能技术生成

文本合成语音知识点:

  1. 使用语音密钥和位置/区域创建 SpeechConfig
    var config = SpeechConfig.FromSubscription(key,location/region); //返回一个配置实例SpeechConfig

  2. config.SpeechSynthesisLanguage = 语言类型

  3. config.SpeechSynthesisVoiceName = 声音类型

  4. 将语音合成到文件中:
    using var audioConfig = AudioConfig.FromWavFileOutput(“路径/file.wav”);(using 语句会自动释放非托管资源,导致对象在释放后超出范围。)
    创建AudioConfig 以使用 FromWavFileOutput() 函数自动将输出写入 .wav 文件

  5. 合成到扬声器输出:
    using var synthesizer = new SpeechSynthesizer(SpeechConfig, AudioConfig); //创建SpeechSynthesizer对象,
    用SpeakTextAsync(“string”)方法可执行语音合成和写入文件
    如果省略AudioConfig参数,则合成的语音将直接输出到扬声器

  6. 获取内存中流形式的结果:
    如果将AudioConfig参数设置为null (默认不会在当前处于活动状态的输出设备上播放音频)
    将结果保存到 result变量中,然后使用AudioDataStream.FromResult(result)从reslut中获取流

7.自定义音频格式(音频文件类型,采样率,位深度): config.SetSpeechSynthesisOutputFormat(合成输出格式id);

8.使用SSML自定义语言特征:在项目根目录为SSML创建一个新的XML文件。根元素,使用元素中的name
参数来改变语音。更改语音合成请求以引用XML文件,将SpeakTextAsync()改成SpeakSsmlAsync(),参数为字符串,所以先使用
File.ReadAllText() 加载字符串形式的 SSML 配置。(不使用SSML改变语音->3)

  1. SSML 调整讲话风格:
<mstts:express-as style="发音语气" styledegree="发音强度" role=""></mstts:express-as>
styledegree 指定更强或更柔和的风格(仅支持中文神经语音)。调整 role 参数,使语音模拟不同的年龄和性别(zh-cn-XiaomoNeural
zh-cn-XiaoxuanNeural)。
  1. 调整讲话语言:
	<lang xml:lang="语言类型">句子</lang>(不同地区)
  1. 添加或删除中断/暂停:
    使用元素 break 可在单词之间插入暂停(或中断),或者防止文本转语音服务自动添加暂停。
	<break strength="指定暂停的相对持续时间" />
	<break time="暂停的绝对持续时间" />
  1. 添加语音(仅适合输入文本的开头或结尾,或者两个相邻句子的分界处):
	<mstts:silence  type="添加静音的位置"  value="静音的时间"/>
  1. 指定段落和句子:
    p 和 s 元素分别用于表示段落和句子

  2. 使用音素改变发音:
    ph 元素用于 SSML 文档中的发音。 ph 元素只能包含文本,而不能包含其他元素

	<phoneme alphabet="string" ph="string"></phoneme>
	alphabet:指定在 ph 属性中合成字符串发音时要使用的音标。 指定音标的字符串必须以小写字母指定。
	ph:一个字符串,包含用于在 phoneme 元素中指定单词发音的音素。 如果指定的字符串包含无	
		法识别的音素,则文本转语音 (TTS) 服务将拒绝整个 SSML 文档,并且不会生成文档中指定的任何语音输出。	
  1. 使用自定义词典改善发音*:
    有时文本转语音服务无法准确地根据字词发音。 例如,公司的名称、医学术语或表情符号。 开发人员可以使用 phoneme 和 sub
    标记来定义采用 SSML 朗读单个实体的方式。 但是,如果需要定义朗读多个实体的方式,则可以使用 lexicon 标记创建自定义词典。

  2. 调整韵律:
    prosody 元素用于指定文本转语音输出的音节、调型、范围、速率、持续时间和音量的变化。
    prosody 元素可包含文本和以下元素:audio、break、p、phoneme、prosody、say-as、sub 和 s。

<prosody pitch="指示文本的基线音节" contour="value" range="文本音节范围" rate="讲出速率" 
	duration="读取文本时应该消逝的时长" volume="语音的音量级别"></prosody>
  1. 更改语速:
	<prosody rate="+30.00%"></prosody>
  1. 更改音量:
    可以在单词或句子级别对标准语音应用音量变化。 只能在句子级别对神经语音应用音量变化。
 	<prosody volume="+20.00%"></prosody>
  1. 更改音高:
    可以在单词或句子级别对标准语音应用音节变化。 只能在句子级别对神经语音应用音节变化。
	<voice name="en-US-ChristopherNeural"></voice>
  1. 更改音高升降曲线:
   <prosody contour="(60%,-60%) (100%,+80%)" ></prosody>
  1. say-as 元素:
    say-as 是一个可选元素,指示元素文本的内容类型(例如数字或日期)
	<say-as interpret-as="指定文本内容类型" format="digit string" detail="string"> <say-as>

22.添加录制的视频:

	<audio src="音频路径"/></audio>
  1. 添加背景音频:
	<mstts:backgroundaudio src="音频位置" volume="指定背景音频文件的音量" 
		fadein="背景音频淡入的持续时间" fadeout="背景音频淡出的持续时间"/>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

S 占占

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值