
精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
联系方式
服务方向
锐英源精品开源,禁止转载和任何形式的非法内容使用,违者必究
近期语音识别训练wav文件,要进行调整,用到了sox,但是用脚本时遇到错误。
D:\语音识别\工具\wav>(sox -r 16000 -c 1 -b 16 a.wav __a.wav && del a.wav && move __a.wav a.wav )
sox WARN wav: User options overriding size read in .wav header
sox FAIL formats: bad input format for file `a.wav': data encoding was not specified
加了-e signed-integer ,把数据表示方式修改了,FAIL行没了,但是转过后wav杂音大,听不出来原音。
对wav内文件格式了解下:
unsigned short compressionCode;//2byte,格式种类(1-线性pcm-WAVE_FORMAT_PCM,WAVEFORMAT_ADPCM)
正常的是1,错误的是3
再学习下wav头结构体
1. typedef struct WAV_HEADER_S 2. { 3. char riffType[4]; //4byte,资源交换文件标志:RIFF 4. unsigned int riffSize; //4byte,从下个地址到文件结尾的总字节数 5. char waveType[4]; //4byte,wav文件标志:WAVE 6. char formatType[4]; //4byte,波形文件标志:FMT(最后一位空格符) 7. unsigned int formatSize; //4byte,音频属性(compressionCode,numChannels,sampleRate,bytesPerSecond,blockAlign,bitsPerSample)所占字节数 8. unsigned short compressionCode;//2byte,格式种类(1-线性pcm-WAVE_FORMAT_PCM,WAVEFORMAT_ADPCM) 9. unsigned short numChannels; //2byte,通道数 10. unsigned int sampleRate; //4byte,采样率 11. unsigned int bytesPerSecond; //4byte,传输速率 12. unsigned short blockAlign; //2byte,数据块的对齐,即DATA数据块长度 13. unsigned short bitsPerSample; //2byte,采样精度-PCM位宽 14. char dataType[4]; //4byte,数据标志:data 15. unsigned int dataSize; //4byte,从下个地址到文件结尾的总字节数,即除了wav header以外的pcm data length 16. }WAV_HEADER;
没有用处。
最后对比其它脚本文件,把批处理的文件名放前面好了,类似:
sox a.wav __a.wav -r 16000 -c 1 -b 16
开源项目用的时候出的莫名其妙的错误很正常,但有时候不能按错误的思路来解决,要用正确的方式来对比,找到正确的方式就好办。