60 lines
1.5 KiB
Python
60 lines
1.5 KiB
Python
|
# utils_tts.py
|
|||
|
# 同济子豪兄 2024-5-23
|
|||
|
# 语音合成
|
|||
|
|
|||
|
print('导入语音合成模块')
|
|||
|
|
|||
|
import os
|
|||
|
import appbuilder
|
|||
|
from API_KEY import *
|
|||
|
import pyaudio
|
|||
|
import wave
|
|||
|
|
|||
|
tts_ab = appbuilder.TTS()
|
|||
|
|
|||
|
def tts(TEXT='我是同济子豪兄的麒麟臂', tts_wav_path = 'temp/tts.wav'):
|
|||
|
'''
|
|||
|
语音合成TTS,生成wav音频文件
|
|||
|
'''
|
|||
|
inp = appbuilder.Message(content={"text": TEXT})
|
|||
|
out = tts_ab.run(inp, model="paddlespeech-tts", audio_type="wav")
|
|||
|
# out = tts_ab.run(inp, audio_type="wav")
|
|||
|
with open(tts_wav_path, "wb") as f:
|
|||
|
f.write(out.content["audio_binary"])
|
|||
|
# print("TTS语音合成,导出wav音频文件至:{}".format(tts_wav_path))
|
|||
|
|
|||
|
def play_wav(wav_file='asset/welcome.wav'):
|
|||
|
'''
|
|||
|
播放wav音频文件
|
|||
|
'''
|
|||
|
prompt = 'aplay -t wav {} -q'.format(wav_file)
|
|||
|
os.system(prompt)
|
|||
|
|
|||
|
# def play_wav(wav_file='temp/tts.wav'):
|
|||
|
# '''
|
|||
|
# 播放wav文件
|
|||
|
# '''
|
|||
|
# wf = wave.open(wav_file, 'rb')
|
|||
|
|
|||
|
# # 实例化PyAudio
|
|||
|
# p = pyaudio.PyAudio()
|
|||
|
|
|||
|
# # 打开流
|
|||
|
# stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
|
|||
|
# channels=wf.getnchannels(),
|
|||
|
# rate=wf.getframerate(),
|
|||
|
# output=True)
|
|||
|
|
|||
|
# chunk_size = 1024
|
|||
|
# # 读取数据
|
|||
|
# data = wf.readframes(chunk_size)
|
|||
|
|
|||
|
# # 播放音频
|
|||
|
# while data != b'':
|
|||
|
# stream.write(data)
|
|||
|
# data = wf.readframes(chunk_size)
|
|||
|
|
|||
|
# # 停止流,关闭流和PyAudio
|
|||
|
# stream.stop_stream()
|
|||
|
# stream.close()
|
|||
|
# p.terminate()
|