文本转语音这类技术已经有很多了,自从大模型出现后在转换速度和转换后的还原度上有了很大的突破。今天这个示例是基于智谱AI的CogTTS来实现的文本转语音的例子。

在这个例子中,我们的需求如下:

  • 在一个名为speech.txt文本中保存了要转换的语音
  • 通过CogTTS将speech.txt中的文本转换为语音
  • 将转换后的语音保存到./audo/speech.wav文件中

要完成这些工作,我们首先需要安装依赖。在这之前我们在当前目录下创建一个Python的虚拟环境

1
2
python -m venv .venv
./venv/Scripts/activate

然后安装依赖

1
pip install zai-sdk

示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

import zai # 导入CogTTS
from zai import ZhipuAiClient # 导入智谱AI的客户端
from pathlib import Path # 用于查找和创建文件目录

client=ZhipuAiClient(api_key="这里输入你的智谱AI的ApiKey")
# 创建audio目录(如果不存在)
audio_dir = Path("audio")
audio_dir.mkdir(exist_ok=True)
speech_file_path = audio_dir / "speech.wav"

content="" # 用于保存从文本中读出的内容
spech_text_file_path=Path("speech.txt")
with open(spech_text_file_path,'r',encoding='utf-8') as f:
content=f.read()


response=client.audio.speech(
model="cogtts", # 制定使用的模型为cogtts 这是固定的
input=content, # 设置要让模型读取的文本内容
voice="douji", # 这里可以设置语音的音色,根据官方文档可以有多个音色
response_format="wav", # 返回的文件格式,支持 wav和pcm
speed=1.0, # 语速,默认1.0,取值范围[0.5, 2]
volume=1.0 # 音量,默认1.0,取值范围(0, 10]
)
response.stream_to_file(speech_file_path)

CogTTS支持的音色

  • tongtong: 彤彤,默认音色
  • chuichui: 锤锤
  • xiaochen: 小陈
  • jam: 动动动物圈jam音色
  • kazi: 动动动物圈kazi音色
  • douji: 动动动物圈douji音色
  • luodo: 动动动物圈luodo音色