[index-tts]可以增加语速控制么?

2025-10-30 599 views
5

回答

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 这个能支持么.