一、TTS(文本转语音)、预处理
TTS(text to speech):文本转语音,即语音生成技术。
语言:python
本文实现功能:文本转文字(需在线,访问URL),
查看.wav文件参数信息,
.mp3(压缩)转.wav(无损)[上采样]
目的:想通过调用API,完成批量的短文本,转音频数据(.wav/mp3),合成音频数据集。
方法:查找(搬运工),参考,调整,做记录以便以后使用。
参考一下文章,感谢他们:
.mp3转.wav,来源:https://blog.csdn.net/qq_38161040/article/details/91832980
python音频处理(.wav):https://www.cnblogs.com/xingshansi/p/6799994.html
二、使用步骤
1、文本转语音
代码如下(示例):
import time
import requests
#详细参数请访问,参考源(1)
def TTS(text, speed, person,volume):
data = {'tex': text,
'spd': speed, #语速[1,9/15],5适中
'lan': 'ZH',
'per': person, #语库,说话人,0-11
'ctp': 1,
'cuid': 'baike',
'ie': 'UTF-8',
'pdt': 301,
'vol': volume, #音量0-9,5适中
'rate': 32}
result = requests.get('https://tts.baidu.com/text2audio', params=data)
#处理异常
try:
result.json()
except:
return result.content
else:
raise ValueError
if __name__ == "__main__":
text_messages = "大自然搬运工,冲浪快乐。Hello,wold!"
voice_data = TTS(text_messages, 5, 0, 9) #语速、不同人、音量
with open(mp3_path, 'wb+') as f: #保存为.MP3文件
f.write(voice_data)
f.close()
#time.sleep(3)
mp3_transformWav(mp3_path,wav_path) #.MP3文件转写为.wav
2、读取.wav文件的数据参数
import os
import wave
f = wave.open(path,'rb')
params = f.getparams()
nchannels,sampwith,framerate,nframes = params[:4]
print(nchannels,sampwith,framerate,nframes)
PS:将.mp3文件保存为.wav文件时候报错()。没有很好的解决,怀疑采样点不足,读取失败。故使用下文,上采样重新转换为.wav
3、.mp3转为.wav
百度TTS后的数据为.MP3,保存时后缀强行改为.wav可以播放,但是数据点不够。因为需要.wav文件,故使用上采样,音频可能就没有那么“准”了
from os import path
from pydub import AudioSegment
def mp3_transformWav(origin_path,save_path):
sound = AudioSegment.from_file(origin_path, format='MP3') # 读取mp3的波形数据
f = wave.open(save_path, 'wb') # 将读取的波形数据转化为wav
f.setnchannels(1) # 频道数
f.setsampwidth(2) # 量化位数
f.setframerate(16000) # 取样频率
f.setnframes(len(sound._data)) # 取样点数,波形数据的长度
f.writeframes(sound._data) # 写入波形数据
f.close()