C/Visual C - convertir archivos wav a string

 
Vista:

convertir archivos wav a string

Publicado por willam ulloa (1 intervención) el 03/09/2001 17:09:01
necesito saber como puedo hacer pa cuando yo diga un numero por microfono (por ejemplo digo seis) e internamente eso me lo mande a una cadena pa poder trabajarlo como cadena y despues como entero

gracias, ustedes saben mas que yo
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

Reconocimiento de voz y conversión a cadena

Publicado por Alejandro (913 intervenciones) el 11/10/2024 22:34:16
Hola Willam,

Para lograr que un número dicho por micrófono se convierta en una cadena y luego en un entero, necesitarás utilizar una biblioteca de reconocimiento de voz. En C++, no hay soporte nativo para esto, pero puedes usar bibliotecas como Microsoft Speech API (SAPI) o CMU Sphinx.

A continuación, te daré un ejemplo básico utilizando SAPI, que es más común en aplicaciones de Windows.

Ejemplo de código con SAPI



1. Configura tu proyecto: Asegúrate de tener SAPI instalado y configurado en tu entorno de desarrollo.

2. Código de ejemplo:

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
#include <iostream>
#include <sapi.h> // Asegúrate de tener la biblioteca SAPI
 
int main() {
    // Inicializar COM
    CoInitialize(NULL);
 
    // Crear el objeto de reconocimiento de voz
    ISpRecognizer *pRecognizer = NULL;
    HRESULT hr = CoCreateInstance(CLSID_SpInprocRecognizer, NULL, CLSCTX_ALL, IID_ISpRecognizer, (void **)&pRecognizer);
 
    if (SUCCEEDED(hr)) {
        // Crear el contexto de reconocimiento
        ISpRecoContext *pContext = NULL;
        pRecognizer->CreateRecoContext(&pContext);
 
        // Configurar el reconocimiento de voz
        ISpRecoGrammar *pGrammar = NULL;
        pContext->CreateGrammar(1, &pGrammar);
        pGrammar->LoadDictation(NULL, SPLO_STATIC);
        pGrammar->SetDictationState(SPRS_ACTIVE);
 
        // Comenzar el reconocimiento
        std::cout << "Diga un número: " << std::endl;
 
        while (true) {
            // Esperar a que se reconozca una palabra
            SPRECOSTATE state;
            pContext->GetState(&state);
            if (state == SPRS_ACTIVE) {
                // Aquí se puede agregar el código para manejar el resultado
                // Por simplicidad, se omite el manejo de eventos
            }
        }
 
        // Liberar recursos
        pGrammar->Release();
        pContext->Release();
        pRecognizer->Release();
    }
 
    // Finalizar COM
    CoUninitialize();
    return 0;
}

Explicación del código



1. Inicializar COM: Se inicializa el modelo de objetos COM, que es necesario para usar SAPI.
2. Crear el objeto de reconocimiento: Se crea una instancia del reconocedor de voz.
3. Crear el contexto de reconocimiento: Se establece un contexto para el reconocimiento de voz.
4. Configurar la gramática: Se carga la gramática de dictado para reconocer palabras.
5. Esperar el reconocimiento: Se espera a que el usuario hable y se puede manejar el resultado (en este ejemplo, se omite el manejo de eventos por simplicidad).

Conversión de cadena a entero



Una vez que hayas reconocido el número como una cadena, puedes convertirlo a entero usando `std::stoi`:

1
2
std::string numeroCadena = "6"; // Ejemplo de cadena
int numeroEntero = std::stoi(numeroCadena);

Conclusión



Este es un ejemplo básico para comenzar con el reconocimiento de voz en C++. Te recomiendo que consultes la documentación de SAPI para más detalles sobre cómo manejar eventos y resultados de reconocimiento.

¡Saludos!
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