问题描述
请将一段文字或一篇文章转化为语音,并且能够自动播放或手动播放
解决方法
利用百度的语音合成API接口from aip import AipSpeech
(当然你需要在百度智能云上面创建属于自己的语音应用接口),将文字转换为语音并将转换结果保存为mp3格式
【详细教程】
from aip import AipSpeech
# 该接口已停用
APP_ID = '19466508'
API_KEY = 'nGa68dQVWWzHVEAGGtDvOrXU'
SECRET_KEY = 'zvAKKiP7I2Fw2gGlGzz29QuZosS2lGSl'
ctp = 1
vol = 0
lang = 'zh'
text = 'hello word!'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis(text, lang, ctp, {
'vol': vol,
})
# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
# 将结果保存到 audio.mp3文件里面
if not isinstance(result, dict):
with open('audio.mp3', 'wb') as f:
f.write(result)
接下来使用from mutagen.mp3 import MP3
获取mp3的时长,这样可以非常方便的进行语音的播放和停止
audio = MP3('audio.mp3')
print(audio.info.length)
最后使用from ctypes import windll
进行播放语音
# mciSendString是用来播放多媒体文件的 API指令,可以播放MPEG,AVI,WAV,MP3等等
windll.winmm.mciSendStringA(b'play audio.mp3', 0, 0, 0)
time.sleep(audio.info.length)