美文网首页
调整PCM语音数据的音量

调整PCM语音数据的音量

作者: LittleFat | 来源:发表于2015-11-05 13:32 被阅读2652次

    通过编程实现调整PCM的音量,具体做法是乘上一个固定的数,但是要考虑数据的溢出问题,代码如下:

    //调节PCM数据音量
    //comment     : 对PCM数据的音量进行放大  
    //parameter   :   
    //            pData   PCM数据  
    //            nLen    PCM数据的长度  
    //            nBitsPerSample  每个Sample的位数,一般为8的整数  
    //            multiple    放大倍数  
    //result      : S_OK 成功  
    int AmplifyPCMData(BYTE* pData, int nLen, int nBitsPerSample, float multiple)   
    {   
        int nCur = 0;   
        if (16 == nBitsPerSample)   
        {   
            while (nCur < nLen)   
            {   
                short* volum = (short*)(pData + nCur);   
                *volum = (*volum) * multiple;   
                if (dwData < -0x8000)
                {
                    dwData = -0x8000;
                }
                if (*volum > SHRT_MAX)//爆音的处理   
                {   
                    *volum = SHRT_MAX;   
                }   
                *(short*)(pData + nCur) = *volum  ;   
                nCur += 2;   
            }   
               
        }   
        else if (8 == nBitsPerSample)   
        {   
            while (nCur < nLen)   
            {   
                BYTE* volum = pData + nCur;   
                *volum = (*volum) * multiple;   
                if (*volum > 255)//爆音的处理   
                {   
                    *volum = 255;   
                }   
                *pData  = *volum  ;   
                nCur ++;   
            }   
               
        }   
        return S_OK;   
           
    }  
    
    

    调整完后效果可以使用Audacity对比:


    image.png

    相关文章

      网友评论

          本文标题:调整PCM语音数据的音量

          本文链接:https://www.haomeiwen.com/subject/rdqchttx.html