2011-02-15 2 views
0

청크를 음성 인식 엔진에 제공해야합니다. 지금 내 프로그램은 읽고이 코드를 사용하여 8K 속도 ulaw 인코딩 된 원시 파일에서 데이터의 버퍼 덩어리 :C의 마이크에서 원시 데이터 청크 가져 오기

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 속도로 유지되어야합니다.

어떻게 하시겠습니까? 건설적인 도움을 주셔서 감사합니다.

+2

오디오 데이터 캡처는 OS에 크게 의존 할 수 있습니다. Windows 또는 Linux에 있습니까? - 편집 : fopen_s(), 그래서 가정합니다. – BlueCookie

+0

@BlueCookie 저는 Windows를 실제로 사용합니다. – Dunaril

답변

3

파형 오디오 인터페이스 (herehere)를 살펴볼 수 있습니다.

두 번째 링크는 .NET 개발자를위한 것이지만 waveInOpen()과 같은 유용한 c 함수에 대한 많은 정보로 시작하므로 여기에서 시작할 수 있습니다.

편집 : 다른 MSDN 링크 : Recording Waveform Audio