Visual C++ .NET - Capturar y reproducir voz

 
Vista:

Capturar y reproducir voz

Publicado por harold (3 intervenciones) el 07/05/2009 15:56:04
Buen dia maestros del c

Alguno de ustedes sabe como capturar la informacion de un microfono y como reproducir esta informacion en los parlantes sin usar archivos? alguna idea es valida, y si es con archivos tambien es valida..

saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Captura y reproducción de audio en tiempo real con PortAudio

Publicado por Alejandro (265 intervenciones) el 06/02/2024 23:45:45
Harold, para capturar información del micrófono y reproducirla en los parlantes en C, puedes utilizar bibliotecas específicas que te permitan interactuar con dispositivos de audio. Una biblioteca popular para esta tarea es PortAudio, que es una biblioteca multiplataforma para la captura y reproducción de audio en tiempo real. Aquí te muestro un ejemplo básico de cómo capturar audio del micrófono y reproducirlo en los parlantes utilizando PortAudio:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <stdio.h>
#include <stdlib.h>
#include "portaudio.h"
 
#define SAMPLE_RATE (44100)
#define FRAMES_PER_BUFFER (64)
#define NUM_SECONDS (5)
 
static int paCallback(const void *inputBuffer, void *outputBuffer,
                      unsigned long framesPerBuffer,
                      const PaStreamCallbackTimeInfo *timeInfo,
                      PaStreamCallbackFlags statusFlags,
                      void *userData) {
    // Pasar datos del micrófono al parlante
    memcpy(outputBuffer, inputBuffer, framesPerBuffer * sizeof(float));
    return paContinue;
}
 
int main() {
    PaError err;
    PaStream *stream;
 
    err = Pa_Initialize();
    if (err != paNoError) {
        printf("Error al inicializar PortAudio: %s\n", Pa_GetErrorText(err));
        return 1;
    }
 
    err = Pa_OpenDefaultStream(&stream, 1, 1, paFloat32, SAMPLE_RATE,
                               FRAMES_PER_BUFFER, paCallback, NULL);
    if (err != paNoError) {
        printf("Error al abrir el flujo de audio: %s\n", Pa_GetErrorText(err));
        return 1;
    }
 
    err = Pa_StartStream(stream);
    if (err != paNoError) {
        printf("Error al iniciar el flujo de audio: %s\n", Pa_GetErrorText(err));
        return 1;
    }
 
    printf("Capturando y reproduciendo audio durante %d segundos...\n", NUM_SECONDS);
    Pa_Sleep(NUM_SECONDS * 1000);
 
    err = Pa_StopStream(stream);
    if (err != paNoError) {
        printf("Error al detener el flujo de audio: %s\n", Pa_GetErrorText(err));
        return 1;
    }
 
    err = Pa_CloseStream(stream);
    if (err != paNoError) {
        printf("Error al cerrar el flujo de audio: %s\n", Pa_GetErrorText(err));
        return 1;
    }
 
    Pa_Terminate();
    return 0;
}

En este ejemplo, estamos utilizando la biblioteca PortAudio para abrir un flujo de audio que captura información del micrófono y la reproduce en los parlantes. La función de callback `paCallback` copia los datos del micrófono al parlante.

Asegúrate de instalar y configurar la biblioteca PortAudio en tu sistema antes de compilar y ejecutar el código anterior. Además, este es solo un ejemplo básico; podrías necesitar realizar ajustes adicionales según tus necesidades específicas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar