Получить сырые куски данных с микрофона в C - PullRequest
0 голосов
/ 15 февраля 2011

Мне нужно передать куски аудиоданных в механизм распознавания голоса.На данный момент моя программа считывает и буферизует порции данных из необработанного файла с кодировкой ulaw 8k, используя этот код:

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 - структура, переданная в механизм распознавания.1006 * Я хотел бы преобразовать этот код так, чтобы он читался с микрофона, а не из файла.Я не могу адаптировать так много типов аудиоданных: они должны оставаться в кодировке ulaw и со скоростью 8k.

Как бы вы это сделали?Спасибо за любую конструктивную помощь.

1 Ответ

3 голосов
/ 15 февраля 2011

Возможно, вы захотите взглянуть на аудиоинтерфейс Waveform: здесь и здесь .

Вторая ссылка предназначена для разработчиков .NET, но начинается с большой информации о полезных функциях c, таких как waveInOpen(), так что вы можете начать здесь.

Редактировать: другая ссылка MSDN: Запись аудио формы волны

...