得益于 AI 技术的发展,合成声音已经能媲美人声。而声音定制服务的出现使得越来越多的企业和个人可以拥有个性化的独特 AI 声音。通常这种 AI 音色的定制需要采集人类配音员(发音人)的声音数据作为 AI 机器学习的对象,因此,个性化的声音定制又称为“声音复刻”,或者“声音克隆”。其中,微软全球云 Global Azure 上的认知服务的企业版神经网络声音定制服务就提供了更便捷地创建高质量合成声音的方法,可为用户带来真人一般的听觉享受。
不过,你知道训练一个符合商用需求、自然流畅、富有情感的 AI 虚拟声音需要花多长时间吗?按照传统的语音合成模型生产流程,这通常需要用一两个月的时间在录音棚采集 10 小时甚至 20 小时(约 6 千—2 万句语料)的专业发音人说话数据,再用至少一个月的工程时间完成声音模型的训练、测试、优化和部署。而微软给出的标准化操作平台可为客户提供全程自助服务,极大地简化了声音定制的训练流程,其深度神经网络技术更是将对训练语料的需求从 10-20 小时的录音数据减少到仅需 30 分钟到 3 小时录音数据(约 300-2000 条录音语句)。
“光说不练假把式”,下面就跟随微软的步伐,开启个性化合成声音定制之旅吧!
通过观看视频,详细了解如何在微软 Global Azure 上使用微软神经网络声音定制服务创建专属 AI 语音。
下方表格是自助创建定制声音的流程概览,之后我们将详细解释每个步骤。
准备工作 |
1.打造负责任的 AI |
阅读并填写“神经网络版定制声音申请表 (custom neural voice application)”[1] |
2.明确声音角色 |
定义声音角色 匹配发音人 | |
3.创建脚本 |
下载通用脚本[2] 创建专业领域脚本 | |
4.声音录制 |
录制授权声明[3] 根据录音脚本录制训练语料 | |
在 Speech Studio 创建声音模型 |
5.创建新项目 |
通过 Azure 帐户登录 Speech Studio 创建新的定制声音项目 |
6.上传声音数据 |
上传授权声明音频 上传声音数据和脚本 | |
7.训练声音模型 |
挑选合适的训练数据和正确的发音人声明文件 输出声音小样进行试听,以确保质量 | |
8.部署声音模型 |
部署所训练的模型 测试 API 端点,确保服务运行良好 | |
集成声音模型 |
9.生成有声内容, 或开发专属应用 |
利用有声内容创作[4]工具调用声音模型,无需编写程序 利用 Speech SDK[5]开发程序,在你的新应用使用定制声音 |
第一步:准备
1. 承诺共同打造负责任的 AI
神经网络版声音定制服务是一个面向企业客户的商业应用。在使用 Speech Studio 定制专属的声音模型之前,你需要代表你的企业或组织填写一份“神经网络版声音定制服务申请表”[6],并描述你的使用场景。微软致力于保护个人和社会的权益,促进人机交互的透明性,并防止声音冒用和误导性内容的传播。因此,微软对神经网络版声音定制服务的访问和使用做出了限制。在提交使用申请并承诺与微软共同遵循负责任的 AI 原则[7]后,你才能获得该服务的访问权。想了解申请流程的更多细节,可以查看此视频。
2. 声音角色设计
声音角色是对你将要创建的 AI 虚拟声音的具象化描述,它涵盖了一系列与声音相关的形象特征和听者感受。通过声音角色的定位,一个好的声音可以与你的客户产生情感连接和共鸣。譬如,在某些场景中,你的声音角色可以贴近一个 40 岁女性的音色,她说话权威、自信,坦率又迷人,做事理性而公正。
一定要仔细考虑声音角色,因为在用这个声音与你的客户进行沟通时,TA 代表着公司的形象。除了要传达与公司相匹配的品牌意图外,声音角色的设定还可以帮助你确保声音定制过程的各个环节的一致性,这包括发音人选择、脚本创建、训练数据录制过程以及最终的模型测试等。
3. 选择合适的脚本
编写脚本的关键在于,能够让发音人轻松捕捉到所塑造的声音形象的人物特色、声音特点,并在录音过程中保持一致的风格。
脚本中的语句可以来自不同来源,语句之间也不必有相互关联。录音脚本中可以包含通用语句和专业语句两个部分。对于有特定应用场景的声音定制,我们推荐你根据自己的场景去制定一些针对性的领域相关的录音脚本。如果你不想自己准备脚本,微软提供了一些共享脚本[2],这些句子是从公开领域挑选出来的,能够支持不同语言的声音模型的训练。如果你打算定制自己的脚本,有一些制作原则你需要考虑,如:脚本中语句的覆盖范围要尽量均衡,包括陈述句、疑问句、感叹句、长句和短句;一行一句,不要把多个句子放在同一行等等。更多指导可以点击此链接[8]查看。
记得仔细检查脚本是否有误,最好进行交叉互查,尤其在声音录制完成之后,需要复验脚本与发音人所说的是否完全一致,如果有不一致的地方,需要按照发音人实际录制的内容进行修改。
4. 筛选发音人、确定录音地点
声音角色确定好以后,就可以挑选发音人了。找到合适的发音人,与设计声音角色和选择脚本同等重要。选择发音人时,需要确保发音人在理解你的声音角色和内容方面拥有丰富的经验,并且具有良好的嗓音,发音清晰、对音高音调能进行良好的控制。尽量保证发音人的自然声音适合你的声音角色。
下面要敲黑板了,一旦选定了发音人,一定要与发音人签订书面协议,并获得发音人的正式授权,你才能使用他们的声音数据来制作合成语音。
关于录音地点,专业的录音工作室是你的首选。安排录制时,建议以 2 小时或 3 小时为单位,每次录制至少间隔一天。让录音工作室在第一次录制后提供几段录音,以便检查音频规格。最开始可以安排每小时大约 100 条语句的录制。随后的时间可以根据前两个阶段每小时完成的录音数量进行调整。
录音时,长句应该分成独立的短句或短语。例如,发音人应该在读完一个句子或短语后停顿,再说下一句。而句子或短语也要分割成独立的.wav 文件,并对每段脚本逐行编号。更多关于脚本的信息,可以阅读文章:定制声音的数据准备[9]。
提醒:不要忘记让发音人录制下面这句话,并上传至 Speech Studio Portal:
“我(填入你的姓名)确认我的声音将会被(填入公司名称)使用于创建合成版本语音。”
点击这里[2]你可以找到授权声明的多语言版本以及用于录制的示例脚本。
第二步:创建
5. 检查录音质量,创建声音合成项目
在录音合同结束前务必检查好音频质量,音频文件必须是 RIFF (.wav) 格式,采样率至少为 24000Hz,样本格式至少为 16 位 PCM(脉冲编码调制),文件必须是以数字命名的.wav 文件扩展名,不能有重复的文件名。所有音频文件必须短于 15 秒。点击此处[9]了解更多关于音频属性的信息。
打开 Speech Studio,使用 Azure 帐户登录,选择要合成声音的语言。然后,进入项目页面,点击“Set up voice talent”(“设置发音人”)为您的声音创建发音人并上传发音人授权语句。
6. 上传声音数据
你至少需要提供 300 个语句作为神经网络定制声音的训练数据。如果所创建的声音要用于正式的企业级产品,我们一般推荐 2000 个语句。
你所训练的声音模型的质量很大程度上取决于你所采用的训练数据的质量。录音和脚本数据上传成功之后,你可以检查数据质量报告,确保声音数据的发音准确性良好,信噪比在可接受范围。同一个训练集里的录音数据需要在音量、语速、语调以及表达方式等方面保持良好的一致性。关于上传声音数据的更多信息可以查看此文档[10]。
7. 训练声音模型
确认训练数据的质量之后,你就可以提交数据来训练声音模型了。注意,在提交训练时,你需要将所所选择的录音数据与发音人资料进行关联。如果发音人授权声明与训练数据中的声音不匹配,那么训练请求不会被通过。
模型训练成功之后,平台将直接输出 100 个测试音频作为试听的小样。你也可以提供不超过 100 句话的自定义测试脚本来进行试听。试听无误,你就可以部署你的模型啦!
8. 部署声音模型
部署声音模型来获取语音合成 API 接口的唯一 ID。声音模型只有部署之后才能用于有声内容创作工具[4],或者通过文本转语音 SDK[11]进行程序开发和集成。部署声音模型后,也会产生相应的托管费用,产品价格信息请参考此页面[12]。你可以随时 Suspend(暂停)你的模型,这样就不会产生托管费用。
第三步:集成9. 使用定制声音
你可以使用有声内容创作工具[4],根据你的文本内容,对声音模型的参数进行微调,以输出不同的声音效果。微软语音平台的有声内容创作工具是基于语音合成标记语言 (SSML) 创建的,它提供了功能丰富又易用的界面,使用户可以通过简单的操作,实时修改语音合成的各种属性,包括情绪风格、读音、韵律、音量、语速等等。有关有声内容创作工具的信息,可以查看此视频[13]。
如果你想开发自己的应用程序来使用定制声音,可以点此查看更多关于使用 Speech SDK 的信息[5]。
好了,现在就行动起来,开始一场声音定制之旅吧!(产品主页)[14]
特别提示:截至发稿时,神经网络版声音定制服务已在微软 Azure.com 正式发布,但尚未在世纪互联运营的 Azure.cn 上线。
[1] :https://aka.ms/customneural
[2] :https://github.com/Azure-Samples/Cognitive-Speech-TTS/tree/master/CustomVoice/script
[3] :https://docs.microsoft.com/en-us/legal/cognitive-services/speech-service/custom-neural-voice/data-privacy-security-custom-neural-voice?context=/azure/cognitive-services/speech-service/context/context
[4]:https://speech.microsoft.com/audiocontentcreation
[5]:https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/speech-sdk?tabs=windows,ubuntu,ios-xcode,mac-xcode,android-studio
[6]:https://customervoice.microsoft.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR7en2Ais5pxKtso_Pz4b1_xUMkZIOUE1R0YwMkU0M1NMUTA0QVNXVDlKNiQlQCN0PWcu
[7]:https://docs.microsoft.com/en-us/legal/cognitive-services/speech-service/custom-neural-voice/transparency-note-custom-neural-voice?context=/azure/cognitive-services/speech-service/context/context
[8]:https://techcommunity.microsoft.com/t5/ai-cognitive-services-blog/how-to-create-a-custom-neural-voice/ba-p/3028275
[9]:https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/how-to-custom-voice-prepare-data
[10]:https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/how-to-custom-voice-prepare-data
[11]:https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/get-started-text-to-speech?tabs=script,windowsinstall&pivots=programming-language-csharp
[12]:https://azure.microsoft.com/en-us/pricing/details/cognitive-services/speech-services/
[13]:https://www.youtube.com/watch?v=ygApYuOOG6w
[14]:https://speech.microsoft.com/customvoice
,