gzncpcc

人生如逆旅,我亦是行人

0%

语音合成:Azure+Python+SSML实现

采用的策略是微软云服务的Python SDK + SSML

Azure上,语音部分的文档写的较为详细,包含各种功能,如文本转语音 REST API,TTS SDK,自定义语音模型进行文本转语音等。但是没有整体的、提纲般的介绍,看完文档极有不知如何下手。本文将一步步地介绍,如何从0开始使用Azure SDK的使用方法。我们希望实现的效果是,输入一段文本,调用SDK后,返回给我们一段wav格式的音频,播放后,即为之前输入的文本。

1、注册账号

注册微软Azure账号看这里:https://zhuanlan.zhihu.com/p/49711377
需要一张vasa信用卡,也可以是虚拟卡。对于国内用户,这是极不友好的。不过也有一些其他优惠,比如学生的,自行获取国外edu教育有效了,据说GitHub学生认证也可以,不过都比较麻烦。注册的时候最好使用非大陆的IP,比如香港的IP+香港的地址

2、创建资源

在这里插入图片描述
都选择白嫖免费使用的就完事,注意要选择美国东部的服务,eastus
其他的名称只要是不重复就可以随便填,填写好就可以看到自己的key了
在这里插入图片描述

3、使用SDK

使用之前先安装SDK,Python就一条命令,很简单

1
pip install azure-cognitiveservices-speech

在这里插入图片描述

安装好就可以上代码了,有注释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Copyright (c) Microsoft. All rights reserved.
# Licensed under the MIT license. See LICENSE.md file in the project root for full license information.

# <code>
## 输入文件text.txt/ssml文件
## 输出文件file.wav

from azure.cognitiveservices.speech import AudioDataStream, SpeechSynthesizer
from azure.cognitiveservices.speech.audio import AudioOutputConfig
import azure.cognitiveservices.speech as speechsdk

speech_key, service_region = "your key", "eastus"
speech_config = speechsdk.SpeechConfig(subscription=speech_key, region=service_region)

synthesizer = SpeechSynthesizer(speech_config=speech_config)

# text = "你吃饭了吗?我现在声音自然多了吧"
# with open('text.txt', 'r',encoding='utf-8',errors='ignore') as f:
# text = f.read()

# SSML中需要书签标签,例如。
ssml = "<speak version='1.0' xml:lang='zh-CN' xmlns='http://www.w3.org/2001/10/synthesis' xmlns:mstts='http://www.w3.org/2001/mstts'><voice name='zh-CN-YunxiNeural'><bookmark mark='bookmark_one'/> 你吃饭了吗?我现在声音自然多了吧</voice></speak>";

# result = synthesizer.speak_text_async(text).get() #这个是普通文本
result = synthesizer.speak_ssml_async(ssml).get() #这个是SSML文本
stream = AudioDataStream(result)
stream.save_to_wav_file("file.wav")

SSML格式和列表看官方文档
定价
在这里插入图片描述

参考

https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/python/console/speech_synthesis_sample.py
https://zhuanlan.zhihu.com/p/437580699
https://www.bilibili.com/video/BV15a4y1W7re

坚持原创技术分享,您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道