本来想用pyttsx3实现,但通过读源代码,发现在windows平台上调用了SAPI将文字转成语音,但并没有实现生成音频文件功能,见sapi5.py文件的61行代码
def save_to_file(self, text, filename):
raise NotImplementedError
经过各种查找,决定使用windows的SAPI5实现生成wav文件
先决条件
需要安装python,一定要安装python,否则执行此代码时报错:
spVoice.AudioOutputStream = spFileStream安装SAPI5
Microsoft Speech SDK 5.1,下载地址为:http://www.microsoft.com/download/en/details.aspx?id=10121安装pywin32
sapi 是基于com的接口,python需要pywin32库调用com组件
安装pip install pywin32
代码实现
import win32com.client
spVoice = win32com.client.Dispatch("SAPI.SpVoice")
# 设置速度,正数越大越快,负数越小越慢
# spVoice.Rate=0
# 音量
# spVoice.Volume
'''
SAPI.SpFileStream的用法参加windows的sapi文档
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ee125548(v%3dvs.85)
'''
spFileStream = win32com.client.Dispatch("SAPI.SpFileStream")
spFileStream.Open(r'C:\Users\mym\Desktop\tts\1.wav', 3, False)
spVoice.AudioOutputStream = spFileStream
text='''
共享单车、共享汽车、共享充电宝……在to C消费领域继续汹涌蔓延的共享生活方式,也被模式平移至产业互联网领域,逐渐影响着企业的办公方式。
'''
spVoice.Speak(text)
关于SAPI的api,参见下面链接:
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ee125548(v%3dvs.85)