Python 文字转语音(TTS)
文章目录
- Python 文字转语音(TTS)
-
- 0.简介
- 1.pyttsx3
-
- 0.简介
- 1.安装
- 2.实例代码
- 3.参考链接
- 2.tts
-
- 0.简介
- 1.安装
- 2.实例代码
- 3.win32com
-
- 0.简介
- 1.安装
- 2.实例代码
- 3.参考链接
- 4.ttskit (未使用)
-
- 0.简介
- 1.安装
- 2.实例代码
- 5.zhtts
-
- 0.简介
- 1.安装
- 2.实例代码
- 6. souddevice播放音频
-
- 0.简介
- 1.安装
- 2.示例代码
- 3.参考链接
- 7.其他链接
0.简介 下面所有的实例代码只是我在我项目中使用的代码,有其他需求可以参考官方文档。【主要是在Windows环境下】
1.pyttsx3 0.简介
可以离线使用,但在Ubuntu系统下调用espeak包——中文发声很奇怪。
目前支持的设备以及语音识别引擎:
nsss
-Mac OS X 10.5
及更高版本上的NSSpeechSynthesizer
sapi5
-Windows XP,Windows Vista
和(未经测试)Windows 7
上的SAPI5
espeak
- 可以托管共享库的任何发行版/平台上的eSpeak
(例如,Ubuntu/Fedora Linux(树莓派)
)
1.安装
可能要安装其他依赖,如果下面这条命令安装不了,可以去查查安装方法。
python -m pip install pyttsx3
2.实例代码
import pyttsx3
def use_pyttsx3():
# 创建对象
engine = pyttsx3.init()# 获取当前语音速率
rate = engine.getProperty('rate')
print(f'语音速率:{rate}')
# 设置新的语音速率
engine.setProperty('rate', 150)# 获取当前语音音量
volume = engine.getProperty('volume')
print(f'语音音量:{volume}')
# 设置新的语音音量,音量最小为 0,最大为 1
engine.setProperty('volume', 1.0)# 获取当前语音声音的详细信息# 这里我也是找到的实例代码感觉写的很矛盾,最后发出的还是女声
voices = engine.getProperty('voices')
print(f'语音声音详细信息:{voices}')
# 设置当前语音声音为女性,当前声音不能读中文
engine.setProperty('voice', voices[1].id)
# 设置当前语音声音为男性,当前声音可以读中文
engine.setProperty('voice', voices[0].id)
# 获取当前语音声音
voice = engine.getProperty('voice')
print(f'语音声音:{voice}')# 语音文本
words = input('请输入要说的话:')
# 将语音文本说出来
a = engine.say(words)
engine.runAndWait()
engine.stop()# 保存音频
engine.save_to_file('张三,王五,你们好,请离开!', filename='./wavfiles/go_out.wav', name='test')
engine.runAndWait()if __name__ == '__main__':
use_pyttsx3()
3.参考链接
【pytorch中文网-python使用pyttsx调用设备的TTS实现语音合成】
2.tts 0.简介
没啥简介。自己查查吧
1.安装
pip install tts
2.实例代码
from gtts import gTTS
import oslanguage = 'zh' # 或 zh-tw
#slow=False时,语速为Normal
output = gTTS(text="这是中文", lang=language, slow=False)
output.save(filename)# Play the converted file
os.system(f"start {filename}")
3.win32com 0.简介
只能在Windows下使用,这里面包含了很多东西,不止TTS。
【官方API文档】
1.安装
【Python 基础篇-python3安装pyHook和pywin32库】
python -m pip install pyHook
python -m pip install pywin32
2.实例代码
import win32com.client
speaker = win32com.client.Dispatch("SAPI.SpVoice")
speaker.Speak("你好,这是中文!")
3.参考链接
【CSDN-python在Windows系统下实现TTS(文字转语音)】
4.ttskit (未使用) 0.简介
【Github-ttskit项目链接】
1.安装
python -m pip install -U ttskit pyworld
python -m pip install ffmpeg
2.实例代码
略。
5.zhtts 0.简介
借助Tensorflow框架开发的TTS,可以存储为numpy数组(不需要存储为
.wav
或.mp3
文件,减少了文件读取操作)。【Github-zhtts项目链接】
1.安装
python3 -m pip install -U ffmpeg pyworld ttskit# 会安装tensorflow-cpu版本,但使用时会报CUDA的错
python3 -m pip install tensorflow-gpu
2.实例代码
更多实例代码参考Github项目链接。
import zhtts
import sounddevice as sdtts = zhtts.TTS()# use fastspeech2 by default
text1 = "2020年,这是一个开源的端到端中文语音合成系统"# 下面是自带的函数,借助Pycharm查看出来的。audio为numpy数组可直接传入播放器。
mel = tts.text2mel(text1)
print(mel.shape, type(mel))
audio = tts.mel2audio(mel)
print(audio, type(audio))
# 下面这里可以先看【6.sounddevice播放音频】
sd.play(audio, samplerate=24000) # samplerate=24000为通过其他包转换为.wav文件,再读取该文件获取的
sd.wait()
6. souddevice播放音频 0.简介
这个也没简介自己查查吧。
1.安装
python -m pip install soundfile sounddevice
2.示例代码
import soundfile
import sounddevicedevs=sd.query_devices()#返回系统所有的声音设备
print(devs) # 带><的是默认播放设备
# 1 代表设备号;麦克风阵列 (Synaptics Audio)代表设备名称;MME (2 in, 0 out)代表驱动为MME和2个输入通道
"""
0 Microsoft Sound Mapper - Input, MME (2 in, 0 out)
>1 麦克风阵列 (Synaptics Audio), MME (2 in, 0 out)
2 Microsoft Sound Mapper - Output, MME (0 in, 2 out)
<3 扬声器 (Synaptics Audio), MME (0 in, 2 out)
4 主声音捕获驱动程序, Windows DirectSound (2 in, 0 out)
5 麦克风阵列 (Synaptics Audio), Windows DirectSound (2 in, 0 out)
6 主声音驱动程序, Windows DirectSound (0 in, 2 out)
7 扬声器 (Synaptics Audio), Windows DirectSound (0 in, 2 out)
8 扬声器 (Synaptics Audio), Windows WASAPI (0 in, 2 out)
9 麦克风阵列 (Synaptics Audio), Windows WASAPI (2 in, 0 out)
10 麦克风阵列 1 (Synaptics Audio capture), Windows WDM-KS (2 in, 0 out)
11 麦克风阵列 2 (Synaptics Audio capture), Windows WDM-KS (4 in, 0 out)
12 麦克风阵列 3 (Synaptics Audio capture), Windows WDM-KS (4 in, 0 out)
13 Output 1 (Synaptics Audio output), Windows WDM-KS (0 in, 2 out)
14 Output 2 (Synaptics Audio output), Windows WDM-KS (0 in, 8 out)
15 Input (Synaptics Audio output), Windows WDM-KS (2 in, 0 out)
16 耳机 (@System32\drivers\bthhfenum.sys,#2;
%1 Hands-Free AG Audio%0
;
(iGene-U2)), Windows WDM-KS (0 in, 1 out)
17 耳机 (@System32\drivers\bthhfenum.sys,#2;
%1 Hands-Free AG Audio%0
;
(iGene-U2)), Windows WDM-KS (1 in, 0 out)
18 耳机 (), Windows WDM-KS (0 in, 2 out)
"""
data, sampler = soundfile.read(path)
try:
sd.default.device[1] = sd.default.device[1] # 可以通过设备号指定播放设备
sd.play(data, samplerate=sampler) # data为numpy数组,samplerate可能为采样率吧(不太清楚)
except Exception as e:
print("播放失败")
sd.wait()
3.参考链接
【新浪博客-音频驱动MME等】
【树莓派实验室-用 Python 在多个输出设备上播放多个声音文件】
【CSDN-Python 在类中使用进程池 通过sounddevice, 进行不同声卡驱动和通道的音频文件播放】
7.其他链接 主要是一些Github的项目:
https://github.com/search?q=TTS++%E4%B8%AD%E6%96%87&type=Repositories
https://github.com/ranchlai/mandarin-tts
https://github.com/aidreamwin/TTS-Clone-Chinese
【灰信网-关于PYTHON音频处理DIRECTSOUND, 你需要知道的事】
【自然语言处理|Python 文字转语音(TTS)】作者:阳一子
本文地址:https://blog.csdn.net/qq_279033270/article/details/117253116
推荐阅读
- 深度学习|【深度学习】吴恩达深度学习-Course1神经网络与深度学习-第四周深度神经网络的关键概念编程(上)——一步步建立深度神经网络
- python|python递归实现全排列函数(代码+解析)
- #|送给小公主的一首诗——闪光屏幕书写(Python实现)
- python|python 人工智能学习 遗传算法实现图片再现。
- 编程|基于Matlab的遗传算法在图像分割问题中的应用
- #|神奇的量子世界——量子遗传算法(Python&Matlab实现)
- 机器学习|遗传算法(GA)的原理简介与应用【python实现】
- 优化算法|遗传算法Python代码实现
- 遗传算法|遗传算法(GA)原理以及matlab与python实现