J'ai besoin de donner des morceaux de données audio à un moteur de reconnaissance vocale. Pour l'instant, mon programme lit et des tampons des blocs de données à partir d'un fichier brut codé ulaw-débit 8k, en utilisant ce code:Récupérer des blocs de données brutes d'un microphone en 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
est la structure passée au moteur de reconnaissance.
Je voudrais transformer ce code afin qu'il soit lu à partir d'un microphone au lieu d'un fichier. Je ne peux pas adapter autant le type de données audio: il devrait rester codé ulaw et avec un taux de 8k.
Comment voulez-vous faire cela? Merci pour toute aide constructive.
Capturer des données audio peut fortement dépendre du système d'exploitation. Êtes-vous sur Windows ou Linux? - EDIT: fopen_s(), donc Windows je suppose. – BlueCookie
@BlueCookie J'utilise Windows en effet. – Dunaril