windows - Få rå klumper af data fra en mikrofon i C

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er nødt til at give klumper af lyddata til en stemmegenkendelsesmotor. For øjeblikket læser og beder mit program data fra en 8k-sats ulaw-kodet råfil ved hjælp af denne kode:


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
", 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 er strukturen overført til genkendelsesmotor.


Jeg vil gerne omdanne denne kode så som læst fra en mikrofon i stedet for en fil. Jeg kan ikke tilpasse så meget typen af ​​lyddata: den skal forblive ulaw-kodet og med en 8k-hastighed.


Hvordan ville du gøre dette? Tak for enhver konstruktiv hjælp.

Bedste reference


Du kan måske se Waveform Audio Interface: her og her. [4] [5]


Det andet link er for .NET-udviklere, men starter med mange oplysninger om nyttige c-funktioner som waveInOpen(), så du kan starte her.


Rediger: Et andet MSDN-link: Optagelse Waveform Audio [6]