从ChatTTS获取语音数据

介绍:

ChatTTS是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。在HuggingFace中开源的版本为4万小时训练且未SFT的版本。
详细介绍请看:ChatTTS介绍以及快速本地部署方法

获取ChatTTS数据步骤如下:

步骤一:加载模型

# 加载模型
chat = ChatTTS.Chat()
chat.load_models(source="local", local_path=CHATTTS_DIR, compile=True if os.getenv('compile', 'true').lower() != 'false' else False)

步骤二:定义要转换的文本

# 定义要转换的文本
text = "你好啊朋友们,听说今天是个好日子,难道不是吗。"
prompt = '[oral_2][laugh_0][break_0]'

步骤三:生成语音片段

# 生成语音片段列表
wavs = chat.infer([text], use_decoder=True)
print(type(wavs))
print(wavs)

步骤四:合并语音片段

可以采用流式输出或者整体输出

# 初始化一个空的numpy数组用于之后的合并
combined_wavdata = np.array([], dtype=wavs[0][0].dtype)  # 确保dtype与你的wav数据类型匹配

# 合并语音片段
for wavdata in wavs:
    combined_wavdata = np.concatenate((combined_wavdata, wavdata[0]))
print(type(combined_wavdata))
print(combined_wavdata)

步骤五:使用sounddevice库播放音频数据

# 使用sounddevice库播放音频数据
sampling_freq = 24000  # 假设采样率为 24000 Hz
sd.play(combined_wavdata, sampling_freq)
sd.wait()  # 等待文件播放结束

保存为.wav文件并播放文件音频

sf.write('../temple_wav/1111.wav', combined_wavdata, 24000)

def play_wav_file(filename):
    # 读取WAV文件
    sampling_freq, audio = read(filename)
    # 播放WAV文件
    sd.play(audio, sampling_freq)
    sd.wait()  # 等待文件播放结束
    
filename = '../temple_wav/1111.wav'
play_wav_file(filename)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值