配置环境
$ apt-get update
$ apt-get install espeak
$ pip install pyttsx3
$ apt-get install ffmpeg
$ apt-get install alsa-utils
运行程序
import pyttsx3
engine = pyttsx3.init()
engine.setProperty('rate', 150)
engine.setProperty('volume', 0.7)
text = "你好,欢迎使用 pyttsx3 中文语音合成!"
engine.say(text)
engine.runAndWait()
engine.save_to_file(text, 'output.wav')
engine.runAndWait()
描述:十几年前的老工具,用规则实现,虽然能用但效果不好
优点:可以离线使用
缺点:塑料声太严重,反正我接受不了
配置环境
$ pip install gtts
运行程序
from gtts import gTTS
import os
os.environ['HTTP_PROXY']='http://192.168.10.106:12346'
os.environ['HTTPS_PROXY']='http://192.168.10.106:12346'
tts = gTTS('你好,世界', lang='zh-cn')
tts.save('hello_world.mp3')
描述:google 提供的 tts 服务,虽然免费但限制比较严重;当然也可以附加一些工具,来解决这个问题;如果用直接删帧的方法会明显影响音质。
优点:调用简单合成速度快,不需要申请帐号可直接使用
缺点:无法调节速度,只有正常和慢,无法精调;需要科学上网
文档:https://github.com/pndurette/gTTS
配置环境
$ pip install openai
运行程序
from pathlib import Path
from openai import OpenAI
def generate_speech(api_key, text, model, voice, file_path):
client = OpenAI(api_key=api_key)
response = client.audio.speech.create(
model=model,
voice=voice,
input=text
)
path = Path(file_path)
with open(path, 'wb') as file:
file.write(response.content)
return f'save to: {path}'
api_key = 'sk-xxx'
text = "测试一下openai的语音合成"
model="tts-1" # tts-1、tts-1-hd、tts-1、tts-1-hd
voice = "shimmer" # alloy、echo、fable、onyx、nova、shimmer
file_path = r"openai.mp3"
print(generate_speech(api_key, text, model, voice, file_path))
描述:openai 提供的基于大模型的语言合成,效果好
优点:流畅自然,合成速度也能接受
缺点:需要 openai 帐号,需要付费,需要科学上网
文档:https://platform.openai.com/docs/guides/text-to-speech
配置环境
$ pip install aip-baidu
运行程序
from aip import AipSpeech
APP_ID = 'xxx'
API_KEY = 'xxx'
SECRET_KEY = 'xxx'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
manual = r'测试百度tts'
if __name__ == '__main__':
print('start voice process')
#语速spd: 5, 语调pit: 5, 播音per: 1
result = client.synthesis(manual, 'zh', 1, {
'vol': 5, 'per':1,
})
if not isinstance(result, dict):
with open('baidu.mp3', 'wb') as f:
f.write(result)
else:
print(result)
print('process end')
描述:中规中举,在国内网络环境下可用
优点:一般手机提供的 tts 效果差不多,不需要科学上网
缺点:需要付费
文档:https://console.bce.baidu.com/ai/#/ai/speech/overview/resource/getFree
例程:使用官方的 Python Demo 很长,依赖库也多;还且会随着 API 更新会切换接口,就不粘在这里了。
描述:几乎是中文合成效果最好的语音合成引擎
优点:字正腔圆,效果很好;新人礼包,第一年最高 50 万次免费,每天可用几百次
缺点:这 Demo, API, 和文档真是一言难尽…… 使用方式与百度类似,但调用方式不够友好
平台:https://www.xfyun.cn/services/online_tts
文档:https://www.xfyun.cn/doc/tts/online_tts/API.html
参数说明文档:找了半天才找到
最终我用的是 openai 的,因为也在用 openai 的其它服务,所以不需要另外申请帐号,且效果是真的好;我自己用,用量也不大,虽然需要付费,但是费用能接受。当然,如果有资源也可以自已搭建深度学习的合成服务,不过我觉得如果用得少,也没必要。