关于电话的语音格式。。。。

ttxm 2002-05-04 03:58:34
我最近在做一个类似电话答录机的软件,我用的是at命令,语音数据已经接收到了,现在关键问题的是语音的压缩格式,modem得初始化语音格式命令是:at+vsm=2,8000,0,0。查一下可知2代表adpcm,adpcm的文件头信息,微软公司没有提供,但是多查几个adpcm文件(此类文件用windows自带的录音机可以生成),将不变的字节复制下来,可变的几个字节是相关长度字节,其计算方法也可推算出来,这样我们就获得了adpcm文件头。8000就是
采样率,这在adpcm得文件头中可以反映出来,后面两个参数是没有意义的。这样就可以生成完整的wav文件了。按照这样的思路,我已经生成了wav文件,可是这个文件就是没有声音,换句话说,全是静音。我也不知道是什么原因,怀疑是录下来的语音数据格式有问题,可是到底是什么问题,那是确确实实录下的语音数据。不知道那位有兴趣,指点一二,不胜感激。email:lanniu1976@sian.com.
...全文
209 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
slver 2002-06-12
  • 打赏
  • 举报
回复
typedef struct waveformat_tag {
WORD wFormatTag; /* format type */
WORD nChannels; /* number of channels (i.e. mono, stereo, etc.) */
DWORD nSamplesPerSec; /* sample rate */
DWORD nAvgBytesPerSec; /* for buffer estimation */
WORD nBlockAlign; /* block size of data */
} WAVEFORMAT, *PWAVEFORMAT, NEAR *NPWAVEFORMAT, FAR *LPWAVEFORMAT;

/* flags for wFormatTag field of WAVEFORMAT */
#define WAVE_FORMAT_PCM 1

/* specific waveform format structure for PCM data */
typedef struct pcmwaveformat_tag {
WAVEFORMAT wf;
WORD wBitsPerSample;
} PCMWAVEFORMAT, *PPCMWAVEFORMAT, NEAR *NPPCMWAVEFORMAT, FAR *LPPCMWAVEFORMAT;

#ifndef _WAVEFORMATEX_
#define _WAVEFORMATEX_

/*
* extended waveform format structure used for all non-PCM formats. this
* structure is common to all non-PCM formats.
*/
typedef struct tWAVEFORMATEX
{
WORD wFormatTag; /* format type */
WORD nChannels; /* number of channels (i.e. mono, stereo...) */
DWORD nSamplesPerSec; /* sample rate */
DWORD nAvgBytesPerSec; /* for buffer estimation */
WORD nBlockAlign; /* block size of data */
WORD wBitsPerSample; /* number of bits per sample of mono data */
WORD cbSize; /* the count in bytes of the size of */
/* extra information (after cbSize) */
} WAVEFORMATEX, *PWAVEFORMATEX, NEAR *NPWAVEFORMATEX, FAR *LPWAVEFORMATEX;
typedef const WAVEFORMATEX FAR *LPCWAVEFORMATEX;

#endif /* _WAVEFORMATEX_ */
slver 2002-06-12
  • 打赏
  • 举报
回复
哦,是mmsystem.h一般在c:\Program Files\Microsoft Visual Studio\VC98\Include下面。如下:
/* defines for dwFormat field of WAVEINCAPS and WAVEOUTCAPS */
#define WAVE_INVALIDFORMAT 0x00000000 /* invalid format */
#define WAVE_FORMAT_1M08 0x00000001 /* 11.025 kHz, Mono, 8-bit */
#define WAVE_FORMAT_1S08 0x00000002 /* 11.025 kHz, Stereo, 8-bit */
#define WAVE_FORMAT_1M16 0x00000004 /* 11.025 kHz, Mono, 16-bit */
#define WAVE_FORMAT_1S16 0x00000008 /* 11.025 kHz, Stereo, 16-bit */
#define WAVE_FORMAT_2M08 0x00000010 /* 22.05 kHz, Mono, 8-bit */
#define WAVE_FORMAT_2S08 0x00000020 /* 22.05 kHz, Stereo, 8-bit */
#define WAVE_FORMAT_2M16 0x00000040 /* 22.05 kHz, Mono, 16-bit */
#define WAVE_FORMAT_2S16 0x00000080 /* 22.05 kHz, Stereo, 16-bit */
#define WAVE_FORMAT_4M08 0x00000100 /* 44.1 kHz, Mono, 8-bit */
#define WAVE_FORMAT_4S08 0x00000200 /* 44.1 kHz, Stereo, 8-bit */
#define WAVE_FORMAT_4M16 0x00000400 /* 44.1 kHz, Mono, 16-bit */
#define WAVE_FORMAT_4S16 0x00000800 /* 44.1 kHz, Stereo, 16-bit */

/* OLD general waveform format structure (information common to all formats) */
slver 2002-06-12
  • 打赏
  • 举报
回复
其实VC中有常见声音格式的头文件,好象是winmm32.h吧,里面有PCM,ADPCM的数据结构描述......
自己找吧。
需要说明的是对于PCM格式的声音文件,8位和16位的表示有些不一样,8位的128表示静音,而16位是用0来表示。
ttxm 2002-05-11
  • 打赏
  • 举报
回复
有没有人知道?????

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧