linchunsheng

linchunsheng

0个粉丝

31

问答

0

专栏

1

资料

linchunsheng  发布于  2016-06-21 11:25:49
采纳率 0%
31个问答
6491

提高采样率声音完全变了

 
请问下大神们我将采样率从8K提高到16K后,声音完全变了,如果使用16K的采样率还需要更新那个位置?谢谢大家。
HI_S32 SAMPLE_AUDIO_AiAenc(int vqe_flags)
{
    HI_S32 i, s32Ret;
    AUDIO_DEV   AiDev = SAMPLE_AUDIO_AI_DEV;
    AI_CHN      AiChn;
    AUDIO_DEV   AoDev = SAMPLE_AUDIO_AO_DEV;
    AO_CHN      AoChn = 0;
    ADEC_CHN    AdChn = 0;
    HI_S32      s32AiChnCnt;
        HI_S32      s32AoChnCnt;
    HI_S32      s32AencChnCnt;
    AENC_CHN    AeChn;
    HI_BOOL     bSendAdec = HI_TRUE;
    FILE        *pfd = NULL;
    AIO_ATTR_S stAioAttr;
    AI_VQE_CONFIG_S stAiVqeAttr;

        /* Enable AI VQE */
        stAiVqeAttr.s32WorkSampleRate         = AUDIO_SAMPLE_RATE_16000; //改为16K
        stAiVqeAttr.s32FrameSample                 = 4096;//SAMPLE_AUDIO_PTNUMPERFRM;
        stAiVqeAttr.enWorkstate                  = VQE_WORKSTATE_COMMON;
        stAiVqeAttr.bAecOpen                         = HI_TRUE;
        stAiVqeAttr.stAecCfg.bUsrMode         = HI_FALSE;
        stAiVqeAttr.stAecCfg.s8CngMode         = 0;
        stAiVqeAttr.bAgcOpen                         = HI_TRUE;
        stAiVqeAttr.stAgcCfg.bUsrMode         = HI_FALSE;
        stAiVqeAttr.bAnrOpen                         = HI_TRUE;
        stAiVqeAttr.stAnrCfg.bUsrMode         = HI_FALSE;
        stAiVqeAttr.bHpfOpen                         = HI_TRUE;
        stAiVqeAttr.stHpfCfg.bUsrMode         = HI_TRUE;
        stAiVqeAttr.stHpfCfg.enHpfFreq         = AUDIO_HPF_FREQ_150;
        stAiVqeAttr.bRnrOpen                         = HI_FALSE;
        stAiVqeAttr.bEqOpen                          = HI_FALSE;
        stAiVqeAttr.bHdrOpen                         = HI_FALSE;


    stAioAttr.enSamplerate   = AUDIO_SAMPLE_RATE_16000;
    stAioAttr.enBitwidth     = AUDIO_BIT_WIDTH_16;
    stAioAttr.enWorkmode     = AIO_MODE_I2S_MASTER;
    stAioAttr.enSoundmode    = AUDIO_SOUND_MODE_MONO;
    stAioAttr.u32EXFlag      = 0;
    stAioAttr.u32FrmNum      = 50;
    stAioAttr.u32PtNumPerFrm = 1024;//SAMPLE_AUDIO_PTNUMPERFRM;
    stAioAttr.u32ChnCnt      = 1;
    stAioAttr.u32ClkSel      = 0;

    gs_bAioReSample = HI_FALSE;
    enInSampleRate  = AUDIO_SAMPLE_RATE_BUTT;
    enOutSampleRate = AUDIO_SAMPLE_RATE_BUTT;
        u32AencPtNumPerFrm = stAioAttr.u32PtNumPerFrm;
               
    /********************************************
      step 1: config audio codec
    ********************************************/
    s32Ret = SAMPLE_COMM_AUDIO_CfgAcodec(&stAioAttr);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_DBG(s32Ret);
        return HI_FAILURE;
    }
我来回答
回答3个
时间排序
认可量排序

药导

1个粉丝

23

问答

0

专栏

11

资料

药导 2016-06-21 15:35:19
认可0
如果你只是将采样率从8K提升到了16K,是不会“声音完全变了”的,你要确定是不是你的播放软件的问题,如果你播放软件还是8K速率播放的话,那你用16K采样率采集到的数据来播放,听到的感觉就是声音是播放的一半速率

linchunsheng

0个粉丝

31

问答

0

专栏

1

资料

linchunsheng 2016-06-21 17:22:45
认可0
你说的播放软件是指那个?因为SAMPLE_COMM_AUDIO_StartAi,SAMPLE_COMM_AUDIO_StartAo都是用stAioAttr此参数来初如化的,可以理解为输入与输出的参数配置是一样的,播声音文件是调用 playHiAudioFile("/home/VOICE/US/Reset_Success.wav", 1, 640)此接口来做的,但现在提高到16K后播出来的声音像是快进一样。IPC对讲声音感觉变慢了。请问下大神们如何修改。
HI_S32 SAMPLE_AUDIO_AiAenc(int vqe_flags)
{
    HI_S32 i, s32Ret;
    AUDIO_DEV   AiDev = SAMPLE_AUDIO_AI_DEV;
    AI_CHN      AiChn;
    AUDIO_DEV   AoDev = SAMPLE_AUDIO_AO_DEV;
    AO_CHN      AoChn = 0;
    ADEC_CHN    AdChn = 0;
    HI_S32      s32AiChnCnt;
        HI_S32      s32AoChnCnt;
    HI_S32      s32AencChnCnt;
    AENC_CHN    AeChn;
    HI_BOOL     bSendAdec = HI_TRUE;
    FILE        *pfd = NULL;
    AIO_ATTR_S stAioAttr;
    AI_VQE_CONFIG_S stAiVqeAttr;

        /* Enable AI VQE */
        stAiVqeAttr.s32WorkSampleRate         = AUDIO_SAMPLE_RATE_16000; //改为16K
        stAiVqeAttr.s32FrameSample                 = 4096;//SAMPLE_AUDIO_PTNUMPERFRM;
        stAiVqeAttr.enWorkstate                  = VQE_WORKSTATE_COMMON;
        stAiVqeAttr.bAecOpen                         = HI_TRUE;
        stAiVqeAttr.stAecCfg.bUsrMode         = HI_FALSE;
        stAiVqeAttr.stAecCfg.s8CngMode         = 0;
        stAiVqeAttr.bAgcOpen                         = HI_TRUE;
        stAiVqeAttr.stAgcCfg.bUsrMode         = HI_FALSE;
        stAiVqeAttr.bAnrOpen                         = HI_TRUE;
        stAiVqeAttr.stAnrCfg.bUsrMode         = HI_FALSE;
        stAiVqeAttr.bHpfOpen                         = HI_TRUE;
        stAiVqeAttr.stHpfCfg.bUsrMode         = HI_TRUE;
        stAiVqeAttr.stHpfCfg.enHpfFreq         = AUDIO_HPF_FREQ_150;
        stAiVqeAttr.bRnrOpen                         = HI_FALSE;
        stAiVqeAttr.bEqOpen                          = HI_FALSE;
        stAiVqeAttr.bHdrOpen                         = HI_FALSE;


    stAioAttr.enSamplerate   = AUDIO_SAMPLE_RATE_16000;
    stAioAttr.enBitwidth     = AUDIO_BIT_WIDTH_16;
    stAioAttr.enWorkmode     = AIO_MODE_I2S_MASTER;
    stAioAttr.enSoundmode    = AUDIO_SOUND_MODE_MONO;
    stAioAttr.u32EXFlag      = 0;
    stAioAttr.u32FrmNum      = 50;
    stAioAttr.u32PtNumPerFrm = 1024;//SAMPLE_AUDIO_PTNUMPERFRM;
    stAioAttr.u32ChnCnt      = 1;
    stAioAttr.u32ClkSel      = 0;

    gs_bAioReSample = HI_FALSE;
    enInSampleRate  = AUDIO_SAMPLE_RATE_BUTT;
    enOutSampleRate = AUDIO_SAMPLE_RATE_BUTT;
        u32AencPtNumPerFrm = stAioAttr.u32PtNumPerFrm;
               
    /********************************************
      step 1: config audio codec
    ********************************************/
    s32Ret = SAMPLE_COMM_AUDIO_CfgAcodec(&stAioAttr);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_DBG(s32Ret);
        return HI_FAILURE;
    }
/********************************************
      step 2: start Ai
    ********************************************/
    s32AiChnCnt = stAioAttr.u32ChnCnt;
    s32Ret = SAMPLE_COMM_AUDIO_StartAi(AiDev, s32AiChnCnt, &stAioAttr, enOutSampleRate, gs_bAioReSample, vqe_flags?&stAiVqeAttr:NULL);
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_DBG(s32Ret);
        return HI_FAILURE;
    }

    /********************************************
      step 3: start Aenc
    ********************************************/
    s32AencChnCnt = 1;
    s32Ret = SAMPLE_COMM_AUDIO_StartAenc(s32AencChnCnt, u32AencPtNumPerFrm, gs_enPayloadType);
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_DBG(s32Ret);
        return HI_FAILURE;
    }

    /********************************************
      step 4: Aenc bind Ai Chn
    ********************************************/
    for (i=0; i     {
        AeChn = i;
        AiChn = i;

        if (HI_TRUE == gs_bUserGetMode)
        {
            s32Ret = SAMPLE_COMM_AUDIO_CreatTrdAiAenc(AiDev, AiChn, AeChn);
            if (s32Ret != HI_SUCCESS)
            {
                SAMPLE_DBG(s32Ret);
                return HI_FAILURE;
            }
        }
    }

    /********************************************
      step 5: start Adec & Ao. ( if you want )
    ********************************************/
    if (HI_TRUE == bSendAdec)
        {
                s32Ret = SAMPLE_COMM_AUDIO_StartAdec(AdChn, gs_enPayloadType);
                if (s32Ret != HI_SUCCESS)
                {
                        SAMPLE_DBG(s32Ret);
                        return HI_FAILURE;
                }

                s32AoChnCnt = stAioAttr.u32ChnCnt;

#if 0
                AO_VQE_CONFIG_S stAoVqeAttr;
                memset(&stAoVqeAttr, 0, sizeof(stAoVqeAttr));

                stAoVqeAttr.bAgcOpen = HI_TRUE;
                stAoVqeAttr.bAnrOpen = HI_TRUE;
                stAoVqeAttr.bEqOpen = HI_TRUE;
                stAoVqeAttr.bHpfOpen = HI_OPEN;
                stAoVqeAttr.enWorkstate = VQE_WORKSTATE_COMMON;

                stAoVqeAttr.stHpfCfg.bUsrMode = HI_FALSE;
                stAoVqeAttr.stHpfCfg.enHpfFreq = AUDIO_HPF_FREQ_120; //80|120|150

                stAoVqeAttr.stAnrCfg.bUsrMode = HI_FALSE;
                   stAoVqeAttr.stAnrCfg.s16NrIntensity = 10; //0~25
                   stAoVqeAttr.stAnrCfg.s16NoiseDbThr = 50; //30~60
                   stAoVqeAttr.stAnrCfg.s8SpProSwitch = 0; //0|1

                stAoVqeAttr.stAgcCfg.bUsrMode = HI_FALSE;
                stAoVqeAttr.stAgcCfg.s8TargetLevel = -1; //-40~-1 dB
                stAoVqeAttr.stAgcCfg.s8MaxGain = 10; //0~30 dB
                stAoVqeAttr.stAgcCfg.s8AdjustSpeed = 1; //0~10 dB/s
                stAoVqeAttr.stAgcCfg.s8ImproveSNR = 1;
                stAoVqeAttr.stAgcCfg.s8UseHighPassFilt = 0;
                stAoVqeAttr.stAgcCfg.s8NoiseFloor = -30; //-65~-20 dB
                stAoVqeAttr.stAgcCfg.s8OutputMode = 1; //depracate noise below NoiseFloor
                stAoVqeAttr.stAgcCfg.s16NoiseSupSwitch = 1;

                stAoVqeAttr.EqCfg.;
#endif
                s32Ret = SAMPLE_COMM_AUDIO_StartAo(AoDev, s32AoChnCnt, &stAioAttr, enInSampleRate, gs_bAioReSample, NULL/*&stAoVqeAttr*/);
                if (s32Ret != HI_SUCCESS)
                {
                        SAMPLE_DBG(s32Ret);
                        return HI_FAILURE;
                }

                s32Ret = SAMPLE_COMM_AUDIO_AoBindAdec(AoDev, AoChn, AdChn);
                if (s32Ret != HI_SUCCESS)
                {
                        SAMPLE_DBG(s32Ret);
                        return HI_FAILURE;
                }
        }

    return HI_SUCCESS;
}

HI_S32 hiClearAoBuf(void)
{
        HI_S32 s32Ret = HI_SUCCESS;

        s32Ret = HI_MPI_AO_ClearChnBuf(0, 0);
        if (HI_SUCCESS != s32Ret)
        {       
                printf("HI_MPI_AO_ClearChnBuf err:0x%x\n",s32Ret);
                return -1;
        }       
        return 0;
}

/******************************************************************************
* function : main
******************************************************************************/
HI_S32 hiAudioInit(int vqe_flags)
{
    HI_S32 s32Ret = HI_SUCCESS;
   
   s32Ret = SAMPLE_AUDIO_AiAenc(vqe_flags);

    return s32Ret;
}

yenfuliu

0个粉丝

16

问答

0

专栏

0

资料

yenfuliu 2016-06-22 10:19:01
认可0
楼上讲的应该是指来源端的声音是8k所以你用8K去采集是正常,如果要改成16K那么一个是来源端改成16K的音源,另一个就是海思内部重采样

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区