none
Mandar audio a través de la Red con winsock para alimentar un reconocedor de habla RRS feed

  • Pregunta

  • Hola mi intención es mandar audio por medio de sockets a un servidor , el cliente carga el audio por medio de las funciones wavexxxx de winmn.lib , mediante PCM  a 8khz , 1 canal.  con lo cual envio  3200 bytes cada 200 ms.

    Uso el lenguaje C con Win32 APi para thread, el micro y las comunicaciones.

    La finalidad de todo esto es alimentar un Reconocedor del habla humana .

    Este reconocedor en forma local (pasandole el audio o alimentándolo de forma local ) en el servidor ( con el micro del servidor ) va  muy pero que muy bien, pero cuando le mando ese mismo audio pero cogido de un micro remoto ( con los mismos parámetros que el local ) . el reconocimiento se va al garete , o la calidad baja muchisimo.

    He leido por ahí bastante del tema, para las pruebas, estoy con el servidor en una red Local no salgo a internet , y envio los socket mediante winsock por TCP ( me han dicho que debería enviarlo mediante UDP o por el protocolo de nivel de sesión RTC)

    ¿Alguna sugerencia , tutorial , consejo sobre esto ? , la verdad me encuentro un poco perdido.

    Nota: es un asunto un poco extraño asi que no sabía en donde meterlo, si en Redes o en programación, seguramente si lo meto en redes me dirán que no son de programación y si lo meto en programación me diran que es asunto de redes.
    lunes, 1 de febrero de 2010 7:09

Todas las respuestas

  • Lo de RTC no sé qué es, pero el protocolo correcto sería el TCP porque no pierdes información si lo haces bien. El UDP no garantiza que el paquete llegue a destino, aparte de que TCP es un flujo y UDP tienes que dividir la información en paquetes. Siendo más seguro el TCP, creo que programas como el Skype usan UDP para enviar los paquetes, comprimidos y encriptados, y la verdad es que la calidad es excelente.

    ¿Has probado a poner tanto el servidor como el cliente en un mismo equipo y hacer como si fuera remoto? ¿Tendrá menos calidad la captura del remoto, es decir, aunque tu captures con los mismo parámetros, quizás el micro o la tarjeta de sonido no tengan la misma calidad? ¿Implementas un protocolo cuando envías los datos, es decir, número de paquete, checksum, reintentar si no se recibe bien y todo eso? Quizás alguna de estas preguntas te lleven por el camino correcto. 
    Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/
    lunes, 1 de febrero de 2010 10:50
    Moderador
  • Ok , ya me va perfectamente, de todas formas muchas muchas gracias. Solución: mandaba paquetes de 3200 bytes cuando en el servidor recibía y mandaba paquetes de 6400 al ASR ,por lo visto le mandaría mucha basura. Un saludo.
    lunes, 1 de febrero de 2010 16:37
  • Hola,

    Ya que mencionas que te va muy bien, ¿podrias decir que ASR estas utilizando?

    Gracias.
    miércoles, 3 de febrero de 2010 20:27