python将文字生成wav文件

本来想用pyttsx3实现,但通过读源代码,发现在windows平台上调用了SAPI将文字转成语音,但并没有实现生成音频文件功能,见sapi5.py文件的61行代码

def save_to_file(self, text, filename):
    raise NotImplementedError

经过各种查找,决定使用windows的SAPI5实现生成wav文件

先决条件

  1. 需要安装python,一定要安装python,否则执行此代码时报错:

    spVoice.AudioOutputStream = spFileStream
    
  2. 安装SAPI5
    Microsoft Speech SDK 5.1,下载地址为:http://www.microsoft.com/download/en/details.aspx?id=10121

  3. 安装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)