迪文科技论坛

 找回密码
 立即注册
搜索
查看: 284|回复: 0

【开源】麦克风变声-场景音效

[复制链接]

14

主题

15

回帖

1362

积分

金牌会员

Rank: 6Rank: 6

积分
1362
QQ
发表于 2025-6-9 19:25:49 | 显示全部楼层 |阅读模式
主要框架逻辑是  迪文串中屏+解码板 ,通过串口通信控制

视频效果如下:
https://v.youku.com/video?vid=XNjQ3NzA2OTE5Mg%3D%3D

界面如下:


屏幕代码如下:



void main(){
       INIT_CPU();  //系统初始化
       PORT_Init();//IO口初始化

       T0_Init();//定时器0初始化
       T2_Init();//定时器2初始化
       my_UART4_Init(115200);
       uart_init();//串口初始化

       while(1){
              Uart_Handle_all();
              TenMsHandle();

   Read_0xF00();//数据自动上传

       }
}

#define DwinLocal_addr      0x51

void MicEffectCheck(void)
{
       u8   Read[2];
       u8   Senddata[3];

       Read_Dgusii_Vp(0x2000,Read,1);
       if(!Read[1])
              return;

       Senddata[0]=DwinLocal_addr;
       Senddata[1]=1;
       Senddata[2]=Read[1];

       UART4_SendStr(Senddata,3);

       Read[1]=0;
       write_dgusii_vp(0x2000,Read,1);
}

void MusicEffectCheck(void)
{
       u8   Read[2];
       u8   Senddata[3];

       Read_Dgusii_Vp(0x2001,Read,1);
       if(!Read[1])
              return;

       Senddata[0]=DwinLocal_addr;
       Senddata[1]=2;
       Senddata[2]=Read[1];

       UART4_SendStr(Senddata,3);

       Read[1]=0;
       write_dgusii_vp(0x2001,Read,1);
}

解码板代码如下:

//变声模式切换
void audio_voice_changer_mode_switch(u32voice_changer_name, VOICE_CHANGER_MODE voice_changer_mode)
{
   VOICECHANGER_PARM parm = {0};
    switch(voice_changer_mode) {
    case VOICE_CHANGER_NONE://原声
       audio_voice_changer_bypass(voice_changer_name, RUN_BYPASS);
       break;
    case VOICE_CHANGER_UNCLE://大叔
       audio_voice_changer_bypass(voice_changer_name, RUN_NORMAL);
       parm.shiftv = 130;
       parm.formant_shift = 100;//无效参数
       parm.effect_v = EFFECT_VOICECHANGE_PITCHSHIFT;
       audio_voice_changer_update_parm(voice_changer_name, &parm);
       break;
    case VOICE_CHANGER_GODDESS://女神
       audio_voice_changer_bypass(voice_changer_name, RUN_NORMAL);
       parm.shiftv = 56;
       parm.formant_shift = 90;
       parm.effect_v = EFFECT_VOICECHANGE_SPECTRUM;
       audio_voice_changer_update_parm(voice_changer_name, &parm);
       break;
    case VOICE_CHANGER_BABY://娃娃音
       audio_voice_changer_bypass(voice_changer_name, RUN_NORMAL);
       parm.shiftv = 50;
       parm.formant_shift = 100;//无效参数
       parm.effect_v = EFFECT_VOICECHANGE_PITCHSHIFT;
       audio_voice_changer_update_parm(voice_changer_name, &parm);
       break;
    case VOICE_CHANGER_MAGIC://魔音女声
       audio_voice_changer_bypass(voice_changer_name, RUN_NORMAL);
       parm.shiftv = 75;
       parm.formant_shift = 80;
       parm.effect_v = EFFECT_VOICECHANGE_PITCHSHIFT;
       audio_voice_changer_update_parm(voice_changer_name, &parm);
       break;
    case VOICE_CHANGER_MONSTER://怪兽音
       audio_voice_changer_bypass(voice_changer_name, RUN_NORMAL);
       parm.shiftv = 160;
       parm.formant_shift = 100;//无效参数
       parm.effect_v = EFFECT_VOICECHANGE_PITCHSHIFT;
       audio_voice_changer_update_parm(voice_changer_name, &parm);
       break;
    case VOICE_CHANGER_DONALD_DUCK://唐老鸭
       audio_voice_changer_bypass(voice_changer_name, RUN_NORMAL);
       parm.shiftv = 60;
       parm.formant_shift = 170;
       parm.effect_v = EFFECT_VOICECHANGE_CARTOON;
       audio_voice_changer_update_parm(voice_changer_name, &parm);
       break;
    case VOICE_CHANGER_MINIONS://小黄人
       audio_voice_changer_bypass(voice_changer_name, RUN_NORMAL);
       parm.shiftv = 50;
       parm.formant_shift = 60;
       parm.effect_v = EFFECT_VOICECHANGE_CARTOON;
       audio_voice_changer_update_parm(voice_changer_name, &parm);
       break;
    case VOICE_CHANGER_ROBOT://机器音
       audio_voice_changer_bypass(voice_changer_name, RUN_NORMAL);
       parm.shiftv = 70;
       parm.formant_shift = 80;
       parm.effect_v = EFFECT_VOICECHANGE_ROBORT;
       audio_voice_changer_update_parm(voice_changer_name, &parm);
       break;
    case VOICE_CHANGER_WHISPER://气音
       audio_voice_changer_bypass(voice_changer_name, RUN_NORMAL);
       parm.shiftv = 70;
       parm.formant_shift = 80;
       parm.effect_v = EFFECT_VOICECHANGE_WHISPER;
       audio_voice_changer_update_parm(voice_changer_name, &parm);
       break;
    case VOICE_CHANGER_MELODY://固定旋律音
       audio_voice_changer_bypass(voice_changer_name, RUN_NORMAL);
       parm.shiftv = 70;
       parm.formant_shift = 80;
       parm.effect_v = EFFECT_VOICECHANGE_MELODY;
       audio_voice_changer_update_parm(voice_changer_name, &parm);
       break;
    case VOICE_CHANGER_FEEDBACK://调制音
       audio_voice_changer_bypass(voice_changer_name, RUN_NORMAL);
       parm.shiftv = 150;
       parm.formant_shift = 80;
       parm.effect_v = EFFECT_VOICECHANGE_FEEDBACK;
       audio_voice_changer_update_parm(voice_changer_name, &parm);
       break;
    default:
       break;
    }
}


有兴趣自行下载



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2025-10-18 20:45 , Processed in 0.035173 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表