语音语速调节 变速不变调

这里我写了一下语音变速不变调的代码

首先说一下这个原理,如果我们直接通过在两个点中间添加点或减少点的,这样虽然语速是变化了,但同时语调也发生了变化,所以我们需要通过插入或删除基音周期片段的方式来改变语速,首先我们需要获取每一帧的基音周期,随后我们做基音周期的标记,这些在我之前的文章里面有相应的方法和代码,当我们获取到基音周期的标记点,我们就可以周期性的添加波形或删减波形,下面贴出一下我的代码

 

 

def speed_adjust(cor, wave_data, point):
“”“cor:调节系数
    wave_data:pcm数据
    point:基音周期的点
”“”
    wave_data = list(wave_data)
    wa = []
    if cor < 1:
        add_num = len(point)*(1-cor)
        every = int(len(point)//add_num)
        for i in range(len(point)-1):
            start = point[i]
            end = point[i + 1]
            if i % every == 0:
                wa.extend(wave_data[start:end])
                wa.extend(wave_data[start:end])
            else:
                wa.extend(wave_data[start:end])
    elif cor > 1:
        decrease_num = len(point) - (len(point) // cor)
        every = int(len(point) // decrease_num)
        for i in range(len(point) - 1):
            start = point[i]
            end = point[i + 1]
            if i % every == 0:
                continue
            else:
                wa.extend(wave_data[start:end])
    speed_data = np.array(wa, dtype="int16")
    return speed_data

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值