从 C 中的麦克风获取原始数据块
Posted
技术标签:
【中文标题】从 C 中的麦克风获取原始数据块【英文标题】:Get raw chunks of data from a microphone in C 【发布时间】:2011-02-15 11:18:59 【问题描述】:我需要将大量音频数据提供给语音识别引擎。现在,我的程序使用以下代码从 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 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 速率。
你会怎么做呢?感谢您的任何建设性帮助。
【问题讨论】:
捕获音频数据在很大程度上取决于操作系统。你是在 Windows 还是 Linux 上? - 编辑:fopen_s(),所以我想是 Windows。 @BlueCookie 我确实在使用 Windows。 【参考方案1】:您可能想看看波形音频接口:here 和 here。
第二个链接是针对 .NET 开发人员的,但开头有很多关于有用的 c 函数的信息,例如 waveInOpen()
,所以你可以从这里开始。
编辑:另一个 MSDN 链接:Recording Waveform Audio
【讨论】:
以上是关于从 C 中的麦克风获取原始数据块的主要内容,如果未能解决你的问题,请参考以下文章
使用 CoreAudio 中的 AudioQueue 从网络播放原始 pcm
使用 Core Audio 从 PCM 原始数据中获取电平值
WebRTC Native M96 SDK接口封装--注册语音观测器对象获取原始音频数据registerAudioFrameObserver
WebRTC Native M96 SDK接口封装--注册语音观测器对象获取原始音频数据registerAudioFrameObserver