用C语言从麦克风获取原始数据块
我需要将音频数据块提供给语音识别引擎。目前,我的程序使用以下代码从8k速率的ulaw编码原始文件中读取并缓冲数据块:用C语言从麦克风获取原始数据块,c,windows,audio,audio-recording,C,Windows,Audio,Audio Recording,我需要将音频数据块提供给语音识别引擎。目前,我的程序使用以下代码从8k速率的ulaw编码原始文件中读取并缓冲数据块: unsigned char buf[MAX_AUDIO_BUF_LEN]; FILE *fp; int len; AudioSamples epSamplesStruct; /* Read in Audio File */ fopen_s(&fp, FILE_NAME, "rb"); if (fp == NULL) { printf("AUDIO THR
unsigned char buf[MAX_AUDIO_BUF_LEN];
FILE *fp;
int len;
AudioSamples epSamplesStruct;
/* Read in Audio File */
fopen_s(&fp, FILE_NAME, "rb");
if (fp == NULL) {
printf("AUDIO THREAD=> ERROR. Cannot open prompt file %s\n", FILE_NAME);
return 1;
}
/* loop while there are still buffers to be picked up from file */
while((len = fread(buf, 1, MAX_AUDIO_BUF_LEN, fp)) > 0) {
epSamplesStruct.samples = (void *) buf;
epSamplesStruct.len = len;
epSamplesStruct.type = L"audio/basic";
num_samples_read += len;
// Processing the audio...
}
epSampleStruct
是传递给识别引擎的结构
我想转换此代码,以便从麦克风而不是文件中读取。我不能适应这么多类型的音频数据:它应该保持ulaw编码和8k速率
你会怎么做?感谢您提供的建设性帮助。您可能需要查看波形音频接口:和 第二个链接是针对.NET开发人员的,但是从许多关于有用的c函数的信息开始,例如
waveInOpen()
,因此您可以从这里开始
编辑:另一个MSDN链接:您可能需要查看波形音频接口:和 第二个链接是针对.NET开发人员的,但是从许多关于有用的c函数的信息开始,例如
waveInOpen()
,因此您可以从这里开始
编辑:另一个MSDN链接:捕获音频数据在很大程度上取决于操作系统。您使用的是Windows还是Linux?-编辑:fopen_s(),所以我想是Windows。@BlueCookie我确实使用Windows。捕获音频数据在很大程度上取决于操作系统。您使用的是Windows还是Linux?-编辑:fopen_s(),所以我想是Windows。@BlueCookie我确实使用Windows。