8. 混合变音音效(voicechanger)

SDK中提供voicechanger变音音效,可自行调整参数做到不同的效果,发出不同的人声或者鸟叫声。

8.1. 可选音效

  • EFFECT_VC_AV_PITCHSHIFT:人声变音1

  • EFFECT_VC_F0_TD:人声变音2

  • EFFECT_VC_AV_F0_TD_AUTOFIT:人声变音3

  • EFFECT_VC_AV_PITCHSHIFT_AUTOFIT:人声变音4

  • EFFECT_VC_AV_BIRD:鸟叫声

  • EFFECT_VC_AV_BIRD1:鸟叫声1

  • EFFECT_VC_AV_BIRD2:鸟叫声2

  • EFFECT_VC_AV_BIRD3:鸟叫声3

  • EFFECT_VC_AV_BIRD4:鸟叫声4

  • EFFECT_VC_AV_BIRD5:鸟叫声5

  • EFFECT_VC_AV_BIRD6:鸟叫声6

其中EFFECT_VC_AV_PITCHSHIFT跟EFFECT_VC_AV_F0_TD是2种变声算法

EFFECT_VC_AV_PITCHSHIFT中formant_shift参数无效;EFFECT_VC_AV_F0_TD中可以通过组合不同的shiftv跟formant_shift调出不同的效果。

例如变女声可以设置成 formant_shift=80;shiftv=60;

EFFECT_VC_AV_F0_TD_AUTOFIT跟EFFECT_VC_AV_PITCHSHIFT_AUTOFIT是会检测声音。

例如 如果是童音即使pitch设高,也不要调高那么多。

EFFECT_VC_AV_BIRD到EFFECT_VC_AV_BIRD6是把人声转换成鸟声,例如人声唱一段旋律,

然后转换出来对应的鸟叫声旋律。其中pitch会改变鸟声的整体音高,

鸟叫建议用 EFFECT_VC_AV_BIRD5或EFFECT_VC_AV_BIRD6


8.2. 配置参数说明

  • const int VC_NG_THRES:能量阈值,低于这个能量的声音会被mute掉,建议默认设成0,根据实际底噪水平设置。

voicechanger变音音效的参数由两个结构体管理

结构体VOICECHANGER_AV_PARM

  • shiftv 调小,音调变高, 变声模式建议范围50到200, 鸟叫声模式建议范围30到100

  • formant 在EFFECT_VC_AV_F0_TD,EFFECT_VC_AV_F0_TD_AUTOFIT 模式下,调小音色变亮, 调小音色变沉。 范围50到200

  • speedv 变速参数,范围50到200. 如果是 实时变声,ad直接变声到da的,因为进出数据量需要一致。这时候speedv必须设成100,不然会有杂音。

下面参数是 EFFECT_VC_AV_BIRD5 跟 EFFECT_VC_AV_BIRD6模式下是调节颤音用的

结构体VOICESYN_AV_PARM

  • vibrate_rate_u 范围0-100, 非0代表开启颤音, 0代表关闭

  • vibrate_rate_d 范围0-100,影响颤音最大幅度,越大颤音幅度越大(BIRD6无效)

  • vibrate_lenCtrol 范围0-100,颤音衰减速度,影响颤音持续时长,100代表最短,0代表最长

  • randpercent 有效范围50-100【或者0到50,镜像对称】, 微调音色的(BIRD6无效)


8.3. 相关函数接口

8.3.2. 函数void *voice_changer_api(void *obuf, u32 sr, void **ppsound)

该函数用于初始化变音音效相关参数,由函数link_voice_changer_sound()调用即可;

8.3.3. 函数void update_voice_changer_parm(VOICECHANGER_AV_PARM *new_vc_parm, VOICESYN_AV_PARM *new_vsyn_ctrol)

该函数用于运行voicechanger变音音效时,动态调整参数,使用时注意采样率要和之前一致,其中参数:

1、new_vc_parm:修改配置后新的参数结构体1
2、new_vsyn_ctrol:修改配置后新的参数结构体2