⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wav2tw.txt

📁 非常好用的pcm格式语音文件转换成wav格式
💻 TXT
字号:
                  WAV2TW格式转换程序说明

    WAV2TW.C程序由main()、WAVE_TO_PCM()和wavechar_pcm()三个函数组成。

一、wavechar_pcm() 函数实现将8 位的语音线性码转换成8 位的PCM 码,转换是按照
    A 律PCM 编码算法进行的。其转换算法是:
  1.先将8位线性码的D7位保存,若D7=1,则置D7=0,若D7=0,则将D6 -- D0位取
    反得到变换码。
  2.将变换码按下表进行变换,得到8位的中间码。

           中间码                             变换码  
           
    M7 M6 M5 M4 M3 M2 M1 M0  ---  D7 D6 D5 D4 D3 D2 D1 D0

    x  0  0  0  0  0  0  0        0  0  0  0  0  0  0  0  
    x  0  0  1  0  0  0  0        0  0  0  0  0  0  0  1   
    x  0  1  0  w  0  0  0        0  0  0  0  0  0  1  w
    x  0  1  1  w  x  0  0        0  0  0  0  0  1  w  x   
    x  1  0  0  w  x  y  0        0  0  0  0  1  w  x  y
    x  1  0  1  w  x  y  z        0  0  0  1  w  x  y  z   
    x  1  1  0  w  x  y  z        0  0  1  w  x  y  z  1
    x  1  1  1  w  x  y  z        0  1  w  x  y  z  1  1   

  3.将中间码进行55异或运算,并将保留的线性码的D7位的值赋给M7,即得到转换成
    的PCM码。

二、WAVE_TO_PCM() 函数将WAVE格式文件转换成8位的PCM 语音文件,其步骤是:
  1.读取被转换文件的文件头,判断该文件是否合法的WAVE文件。WAVE文件的头4个
    字节应为"RIFF",接着的4个字节应是文件总长度的字节数,再下来的4个字节
    应是"WAVE"。本程序采用下面的数据结构来读取文件头。
        struct {
                long int        ckID;
                long int        filesize;
                long int        ckwv;
                long int        ckft;
        } filehead;
  2.读取被转换文件的格式说明部分,判断该文件是何种WAVE文件,获取该文件的采
    样频率、声道数、采样位数、放音速率和数据存放的偏移量等参数。WAVE文件的
    格式参数可用如下的数据结构来读取。
        typedef struct waveformat_tag {
                int      wFormat_Tag;           /波形文件中的声音编码方式/
                int      nChannels;             /声道数/
                long int nSamplesPerSec;        /声音的采样频率/
                long int nAvgbytesPerSec;       /重放波形数据时每秒平均字节数/
                int      nBlockAlign;           /一个采样所占用的字节数/
        }WAVEFORMAT;

        typedef struct pcmwave_format_tag {
                WAVEFORMAT wf;
                int        wBitsPerSample;      /一个采样中的实际位数/
        } PCMWAVEFORMAT;
  3.找到WAVE文件的data部分的始点,读取语音数据,若声道数为2,则把左右声道
    的采样值平均后做为语音数据,并按照采样频率确定要转换的点,然后把要转换
    的点的语音数据变换成8位的线性码,调wavechar_pcm()函数转换成PCM 码。
  4.将转换成功后的PCM 文件长度进行剪栽,使其长度变为512 字节的整数倍。

四、main()函数完成文件名的输入等操作。



                                Oct 16,1995

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -