1 文本转语音技术
文本转语音用到的是科大讯飞的文本转语音AI的api。 首先注册科大讯飞的账号,再然后开通文本转语音服务(免费版),记下创建的应用的API_KEY和APP_ID,填到如下所示的代码中,即可实现文本转语音。
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# -*- coding: utf-8 -*-
"""
Created on Sun Jul 21 21:30:49 2019
@author: zhangfan
"""
import base64
import json
import time
import hashlib
import requests
"""构造一个文本转语音函数,直接调用"""
def text2audio(text):
# API请求地址、API KEY、APP ID等参数,提前填好备用
api_url = "http://api.xfyun.cn/v1/service/v1/tts"
API_KEY = "你的API_KEY"
APP_ID = "你的APP_ID"
OUTPUT_FILE = "output.mp3" # 输出音频的保存路径,请根据自己的情况替换
TEXT = text
# 构造输出音频配置参数
Param = {
"auf": "audio/L16;rate=16000", #音频采样率
"aue": "lame", #音频编码,raw(生成wav)或lame(生成mp3)
"voice_name": "xiaoyan",
"speed": "50", #语速[0,100]
"volume": "77", #音量[0,100]
"pitch": "50", #音高[0,100]
"engine_type": "aisound" #引擎类型。aisound(普通效果),intp65(中文),intp65_en(英文)
}
# 配置参数编码为base64字符串,过程:字典→明文字符串→utf8编码→base64(bytes)→base64字符串
Param_str = json.dumps(Param) #得到明文字符串
Param_utf8 = Param_str.encode('utf8') #得到utf8编码(bytes类型)
Param_b64 = base64.b64encode(Param_utf8) #得到base64编码(bytes类型)
Param_b64str = Param_b64.decode('utf8') #得到base64字符串
# 构造HTTP请求的头部
time_now = str(int(time.time()))
checksum = (API_KEY + time_now + Param_b64str).encode('utf8')
checksum_md5 = hashlib.md5(checksum).hexdigest()
header = {
"X-Appid": APP_ID,
"X-CurTime": time_now,
"X-Param": Param_b64str,
"X-CheckSum": checksum_md5
}
# 发送HTTP POST请求
response = requests.post(api_url, data={'text':TEXT}, headers=header)
# 读取结果
response_head = response.headers['Content-Type']
if(response_head == "audio/mpeg"):
out_file = open(OUTPUT_FILE, 'wb')
data = response.content # a 'bytes' object
out_file.write(data)
out_file.close()
#print('输出文件: ' + OUTPUT_FILE)
else:
pass
#print(response.text)
测试一下上面构造的文本转语音函数
1
text2audio('这是一个文本转语音的测试!') #文本转语音测试文本
生成的语音效果如下所示,音频的音速、音调、音高等参数在程序中都是可以调节的。
2 语音转文本技术
语音转文本用到的是百度的语音转文本AI的api。 流程和上面一样,注册百度AI开放平台,然后创建语音识别应用(免费版),记下APP_ID、API_KEY、SECRET_KEY。然后下载百度AI接口模块,在系统命令行中输入以下命令下载:
1
pip install baidu-aip
然后运行代码即可(注意填入你的百度AI应用的APP_ID、API_KEY、SECRET_KEY)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# -*- coding: utf-8 -*-
"""
Created on Tue Jul 23 17:36:34 2019
@author: zhangfan
"""
from aip import AipSpeech
# Baidu Speech API, replace with your personal key
APP_ID = '你的 APP_ID'
API_KEY = '你的 API_KEY'
SECRET_KEY = '你的 SECRET_KEY'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
"""构造语音识别函数"""
def listen(audio):
with open(audio, 'rb') as f:
audio_data = f.read()
result = client.asr(audio_data, 'wav', 16000, {
'dev_pid': 1536,
})
result_text = result["result"][0]
return result_text
用下面音频测试试试
运行代码,调用语音识别函数
1
print(listen('output.mp3'))
识别结果如下所示:
1
>> 这是一个文本转语音的测试