TTS:访问百度tts完成文本转文字



一、TTS(文本转语音)、预处理

TTS(text to speech):文本转语音,即语音生成技术。

语言:python

本文实现功能:文本转文字(需在线,访问URL),

                         查看.wav文件参数信息,

                        .mp3(压缩)转.wav(无损)[上采样]

目的:想通过调用API,完成批量的短文本,转音频数据(.wav/mp3),合成音频数据集。

斑犀鸟
斑犀鸟

方法:查找(搬运工),参考,调整,做记录以便以后使用。

参考一下文章,感谢他们:

TTS处理,来源:https://blog.csdn.net/Cykinter/article/details/107215464?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-8&spm=1001.2101.3001.4242

.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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值