.. _变速变调(speed): 变速变调(speed) ========================================= speed算法在SDK中一般用于解码变速变调,只要在解码前置上BIT_SPEED位就可使用(可参考录音播放流程),该算法实时性较好,也可用于扩音。 ^^^^^^^^^^^^^^^^^^^^ 配置参数说明 ################################ 该算法的参数主要由SPEED_PITCH_PARA_STRUCT结构体控制,其说明如下: :: * Insample:输入音频采样率,与audio_adc采样率一致即可; * Pitchrate:变调比例,用于调节变调效果,需要与const变量搭配使用; | 当const变量SPITCH_PARM_PR_HResolution = 0时,pitchrate = 128为不变调;小于128时音调变高;大于128时音调变高; | 当const变量SPITCH_PARM_PR_HResolution = 1时,pitchrate = 32768为不变调;小于32768时音调变高;大于32768时音调变高; * Speedin / Speedout:变速比例,扩音应用下默认为1; * Quality:变调运算质量,与运算速度成正比,配置范围3~8; .. image:: speed_parm_init.png :alt: "图1 变速变调参数初始化" :align: center .. centered:: 图1 变速变调参数初始化 变调限制: 1. SPITCH_PARM_PR_HResolution=0时,pitchrate以128为原始音调; - 音调最多降低为原来的1/6,即pitchrate=128*6; - 音调可升高原来的6倍,即pitchrate=128/6;升高音调没有严格的限制不能超过6倍,但是不建议升高过多,过多效果会比较差。 2. SPITCH_PARM_PR_HResolution=1时,pitchrate以32768为原始音调; - 音调最多降低为原来的1/2,即pitchrate=65535; - 音调升高没有严格限制; 变速限制: - speedin,speedout:没有严格限制比例。但是变快太多或者变慢太多效果都会比较差。 ^^^^^^^^^^^^^^^^^^^^ 相关函数 ################################ 函数void \*speed_api(void \*obuf, u32 insample, void \**ppsound) ************************************************************************** 该函数用于初始化变速变调(speed)的相关参数,由应用层调用即可,其中参数: :: 1、obuf:输出的音频buff; 2、insample:当前输入音频的采样率; 3、ppsound:当前算法的前级音频通道句柄; 函数int music_play_speed_set_para(music_play_obj \*hdl, SPEED_PITCH_PARA_STRCUT \*sp_parm) ******************************************************************************************* 该函数用于app_mg工程,在解码流程中动态设置变速变调参数,其中参数: :: 1、*hdl:音乐播放句柄; 2、*sp_parm:新的变速变调参数指针; 3、返回值:成功,返回0;失败,返回-1; voice_toy工程也有类似的相关函数,具体参考发声玩具应用章节。