5
Q
[index-tts]可以增加语速控制么?
A
回答
7
有这个功能,可能会根据需求在后面版本发出来。
0
我在infer.py里添加了一段调整tempo的代码,在前端修改一下界面就可以调整语速并且音色不变了,不知道模型层面是不是可以直接调速,但是至少目前这个简陋的方法可行。
def save_audio_with_tempo(self, wav, output_path, tempo_scale=1.0):
wav_original = wav.view(1, -1)
torchaudio.save(output_path, wav_original.type(torch.int16), 24000)
# 调整速度并保存
if tempo_scale != 1.0:
# 确保音频数据在正确范围内
wav = wav.float().view(1, -1) / 32767.0 # 先归一化到 [-1, 1]
effects = [
["tempo", str(tempo_scale)],
["rate", "24000"]
]
wav_shifted, _ = torchaudio.sox_effects.apply_effects_tensor(
wav,
24000,
effects
)
# 转换回原始范围
wav_shifted = wav_shifted * 32767.0
wav_shifted = torch.clamp(wav_shifted, min=-32767.0, max=32767.0)
torchaudio.save(output_path, wav_shifted.type(torch.int16), 24000)
return wav_shifted
return wav_original
但是注意要先安装两个库
sudo apt-get update
sudo apt-get install sox libsox-dev
0
我在infer.py里添加了一段调整tempo的代码,在前端修改一下界面就可以调整语速并且音色不变了,不知道模型层面是不是可以直接调速,但是至少目前这个简陋的方法可行。
def save_audio_with_tempo(self, wav, output_path, tempo_scale=1.0):
wav_original = wav.view(1, -1)
torchaudio.save(output_path, wav_original.type(torch.int16), 24000)
# 调整速度并保存
if tempo_scale != 1.0:
# 确保音频数据在正确范围内
wav = wav.float().view(1, -1) / 32767.0 # 先归一化到 [-1, 1]
effects = [
["tempo", str(tempo_scale)],
["rate", "24000"]
]
wav_shifted, _ = torchaudio.sox_effects.apply_effects_tensor(
wav,
24000,
effects
)
# 转换回原始范围
wav_shifted = wav_shifted * 32767.0
wav_shifted = torch.clamp(wav_shifted, min=-32767.0, max=32767.0)
torchaudio.save(output_path, wav_shifted.type(torch.int16), 24000)
return wav_shifted
return wav_original
但是注意要先安装两个库
sudo apt-get update sudo apt-get install sox libsox-dev
很棒!
7
有这个功能,可能会根据需求在后面版本发出来。
好的,测试生成的音频好像会有一些些慢,能在模型层面实现调节会更好。
8
我觉得语速挺好,发现的问题是对停顿的判断,尤其“”双引号会导致过长的停顿,某些词组也会有过长停顿。而段落之间却停顿不足。还有就是音量响度不稳,这可以通过规格化处理。错误率很低,比f5强多了,语音克隆比cosy2更逼真,总体看效果很棒。
2
能针对文本的不同部分设置不同的语速吗?
4
@caitongbo 可以基于模型层实现调节,参见: https://github.com/index-tts/index-tts/issues/79#issue-2990198295
1
@caitongbo 可以基于模型层实现调节,参见: #79 (comment)
cool!谢谢!
9
@index-tts 这个能支持么.