我用directX开发的语音采集,以wave格式存放,声音是pcm格式的。请问此pcm(msdn上说是无压缩编码的),是否均匀编码,即如果是8bit就表示256个幅度,相邻幅度间隔相等。还是经过A律或U律压缩的编码1
   此问题对我很重要,因为我要直接对语音信号进行处理。必须弄懂幅度的编码。
   有个要求,必须能指出权威的资料,比如msdn上介绍(我自己没找到)的等等,其他网站也行!
   我确认即给100分!

解决方案 »

  1.   

    推荐一个网址
    http://www.csdn.net/dev/format/windows/wavec.htm
    希望对你有所帮助
      

  2.   

    http://www.cnforyou.com/query/bookdetail.asp?viBookCode=5614目录里边
      

  3.   

    http://www.sunchina.cc/products/modem/5660.htm
      

  4.   

    msdn 上说得对,没有任何压缩。
    我变过一个PCM编码的Wave文件处理的程序,截一段给你:#define READPCMFORMAT 0
    #define READPCMDATA 1
    #define READALL 2#define FILEOPENOK 0
    #define FILEOPENFAIL 1
    #define FILEWAVEERR 2
    #define FILEFMTERR 3
    #define FILEDATAERR 4#define CHANNELMERGE 0
    #define LEFTCHANNEL 1
    #define RIGHTCHANNEL 2 #define MONO 1
    #define STEREO 2const LONG sdtFreq=22050;class CWaveFile : public CObject  
    {
    public:
    CWaveFile();
    virtual ~CWaveFile();protected:
    CString m_strFileName;
    HMMIO m_hmmio; WAVEFORMATEX m_WaveFormat;
    HANDLE m_hPCMData;
    int  m_bErrFlag;
    DWORD m_dwDataBytes;
    DWORD m_dwSamples; HANDLE Convert16BitPCMDataToSample(HANDLE hPCMData,int nChannelFlag);
    HANDLE Convert8BitPCMDataToSample(HANDLE hPCMData,int nChannelFlag);
    HANDLE Convert16BitSampleDataToPCM(HANDLE hLeftSampleData,HANDLE hRightSampleData,int nChannelFlag=MONO);
    HANDLE Convert8BitSampleDataToPCM(HANDLE hLeftSampleData,HANDLE hRightSampleData,int nChannelFlag);public:
    void SetFileName(CString str){ m_strFileName=str;};
    BOOL OpenFile(LPCTSTR lpFileName,UINT uFlag);
    void Close();
    BOOL ReadPCMData();
    HANDLE GetPCMData(){ return m_hPCMData;};
    WAVEFORMATEX GetPCMFormat(){return m_WaveFormat;};
    DWORD GetPCMDataBytes(){return m_dwDataBytes;};
    DWORD GetPCMSamples(){return m_dwSamples;};
    void ClearPCMData();
    BOOL Play(); HANDLE ConvertPCMDataToSample(HANDLE hPCMData,int nChannelFlag);
    HANDLE ConvertSampleDataToPCM(HANDLE hLeftSampleData,HANDLE hRightSampleData,int nChannelFlag); BOOL ConvertToSelfFormat(WAVEFORMATEX *pWaveFormat,WORD dwMaxLimit);
    BOOL ChannelMerge(int nChannleFlag);
    BOOL Convert8BitTo16();
    BOOL AdjustVolume(double dRatio);
    BOOL AmplitfyToMax();
    DWORD GetMaxRange();
    void Standardized(WORD wStandard);
    BOOL ChangeSampleFreq();// BOOL CompressPcmData();
    };#endif // !defined(AFX_WAVEFILE_H__F1CE8F8D_E5E9_4738_A6A1_118624921F8F__INCLUDED_)
      

  5.   

    代码太长,如需要,发邮件给我!
    [email protected]