Un módem de voz es un módem de datos telefónico analógico con la capacidad incorporada de transmitir y recibir grabaciones de voz a través de la línea telefónica. Los módems de voz se utilizan para aplicaciones de telefonía y contestador automático . De manera similar al conjunto de comandos Hayes utilizado para los módems de datos, en el que la PC host controla el módem a través de una serie de comandos conocidos como comandos AT , existe un conjunto bien definido de comandos AT de voz comunes que son algo consistentes en toda la industria.
Problemas de implementación
Debido a que el modo de voz no es el uso típico de un módem, muchos módems en el mercado tienen un soporte deficiente o defectuoso para sus modos de voz. Las características de un buen módem de voz dependen en gran medida de la aplicación prevista e incluyen:
- Operación confiable. Muchos módems simplemente "bloquean" o bloquean la PC host, aunque esto es más común con Winmodems . Otros tienen errores de control de flujo y otros errores de implementación, lo que posiblemente provoque que las llamadas se cuelguen, el audio se salte o el audio se reproduzca después de un intento de aborto.
- Buenas características de audio. Algunos módems tienen un volumen de señal incorregiblemente bajo o producen ruido de audio. Algunos módems no pueden reconocer todas las señales DTMF excepto las mejores . Algunos módems no registran o detectan y notifican el silencio o la inversión de voltaje al final de la llamada, que necesitan algunas aplicaciones.
- Soporte para identificador de llamadas , si es necesario. El "identificador de llamadas de tipo 1", tal como se usa en América del Norte, no se encuentra en la gran mayoría de los módems. Casi todos los conjuntos de chips de módem admiten el identificador de llamadas, pero debido a que el usuario típico de Internet de acceso telefónico no necesita un identificador de llamadas, los componentes adicionales necesarios para admitir el identificador de llamadas a menudo se omiten por razones de costo.
- Soporte para múltiples instancias. Los controladores de muchos módems internos (típicamente Winmodems) no pueden tolerar más de un mismo dispositivo dentro de una sola computadora. Los síntomas de incompatibilidad incluyen bloqueos, pantallas azules de muerte o simple inoperabilidad de todos los módems menos uno. Los módems externos basados en RS-232 (en serie) no tienen esta limitación porque cada módem contiene su propio microprocesador y no tiene conocimiento de otros módems en el mismo host. Los módems USB pueden tener o no este problema, porque algunos módems USB son simplemente módems en serie con un conjunto de chips convertidor "USB a serie" (en cuyo caso no debería haber ningún problema), y otros módems USB están "controlados por el host". y son esencialmente Winmodems adjuntos externamente (en cuyo caso el problema puede persistir).
Plus versus hash
Cada plataforma de módem de voz tiende a admitir uno de los dos conjuntos de comandos de voz; en particular, un tipo del conjunto de comandos contiene un signo más (+) y el otro contiene un signo de almohadilla (#).
Detectando el modo de voz
La compatibilidad con el modo de voz se puede detectar en un módem emitiendo el siguiente comando: AT + FCLASS =?
Este comando generalmente se admite con el signo más si un módem admite el conjunto de comandos "más" o "hash", porque el comando (que significa "clase de fax") es parte de los comandos de fax estándar de la industria que siempre usan el signo más .
Un módem que admita voz responderá con una lista de números delimitada por comas que incluye el número 8. Un módem que no admita voz responderá con ERROR , o con una lista de números que no incluya 8. (Muchos módems informarán 0,1,2 indica soporte para datos (0) y faxes de clase 1 y 2; esto es una indicación de que el soporte de voz no está presente).
Los módems que admiten el conjunto de comandos "hash" generalmente responden a AT # CLS =? también.
Entrar en modo de voz
El comando AT + FCLASS = 8 o AT # CLS = 8 pondrá el módem en modo de voz. La mayoría de los módems siguen colgados y responden con OK . Una vez que se ha aceptado este comando, la mayoría de los módems responderán con mensajes de escape de enlace de datos (DLE) en lugar o además de las respuestas normales del módem. Por ejemplo, en lugar de informar una línea telefónica que suena con el mensaje RING , muchos módems enviarán el carácter DLE ASCII , seguido de la letra R. El conjunto específico de eventos DLE informados por cada módem es específico de su chipset y está documentado en su Guia de referencia.
Consultar las capacidades del módem
El comando AT + VLS =? o AT # VLS =? generalmente devuelve una lista de modos de funcionamiento que son específicos de cada módem. Cada uno de estos modos numerados determina el estado de colgado o descolgado de la línea telefónica, así como el enrutamiento de sonido entre cada uno de los siguientes:
- Grabación / reproducción
- Microteléfono
- Conector para altavoz (que podría simplemente estar cableado como entrada de audio en la tarjeta de sonido de la PC en lugar de ser un conector discreto)
- Toma de micrófono (disponible en algunos módems de voz)
Muchos conjuntos de chips ofrecen una lista de todas las combinaciones posibles de modos, incluso si la placa de módem específica no las admite todas. Esto se debe a que el fabricante de la placa casi siempre es diferente del fabricante del conjunto de chips, y el conjunto de chips viene preconfigurado para admitir todo el hardware posible, incluso si no está implementado en la placa de circuito.
Ejemplo de respuesta a AT + VLS =? desde un módem en el mercado en 2006:
AT + VLS =? 0, "", 0000000000,0000000000, B084008000 1, "T", 0B8418E000,0FE418E000,0B8419E000 2, "L", 0884008000,0CE4008000,0884018000 3, "LT", 0B8418E000,0FE418E000,0B8419E000 4, "S", 0084008000,0484008000,3084018000 5, "ST", 0B8418E000,0FE418E000,0B8419E000 6, "M", 0084008000,04E4008000,3084008000 7, "MST", 0B8418E000,0FE418E000,0B8419E000 8, "S1", 0084008000,0484008000,3084018000 9, "S1T", 0B8418E000,0FE418E000,0B8419E000 10, "MS1T", 0B8418E000,0FE418E000,0B8419E000 11, "M1", 0084008000,04E4008000,3084008000 13, "M1S1T", 0B8418E000,0FE418E000,0B8419E000 14, "H", 0084008000,04E4008000,3084018000 15, "HT", 0B8418E000,0FE418E000,0B8419E000 16, "MS", 0084008000,04E4008000,3084018000 17, "MS1", 0084008000,04E4008000,3084018000 19, "M1S1", 0084008000,04E4008000,3084018000 20, "t", 0B8418E000,0FE418E000, BB8419E000
Si bien cada módem es diferente, generalmente el modo 0 significa colgado (colgado) y el modo 1 es suficiente para levantar el teléfono, grabar / reproducir audio y detectar DTMF (tonos al tacto).
El comando AT + VSM =? o AT # VSM =? generalmente devuelve una lista de formatos de datos de audio admitidos por el módem. Cada formato incluye un nombre (como PCM , ADPCM , μ-law , A-law ), una cantidad de bits por muestra (generalmente 2, 3, 4, 8 o 16) y una frecuencia de muestreo de audio (generalmente 7,200, 8,000 , o 11,025 Hertz ). Estos son códecs de audio estándar de la industria cuyas implementaciones están bien publicadas. El estándar ADPCM es una excepción. Los módems que afirman ser compatibles con ADPCM casi siempre admiten Dialogic ADPCM , también conocido como "VOX", que es similar pero no compatible con otras implementaciones de ADPCM, incluida la ADPCM de Interactive Multimedia Association (IMA) y MS ADPCM (una implementación de Microsoft utilizada en archivos WAV ). Los módems también pueden admitirlos, si se incluye un calificador; de lo contrario, de forma predeterminada, ADPCM significa Dialogic.
Ejemplo de respuesta a AT + VSM =? desde un módem en el mercado en 2006:
AT + VSM =? 1, "PCM SIN FIRMAR", 8,0,8000,0,0 129, "IMA ADPCM", 4,0,8000,0,0 130, "PCM SIN FIRMAR", 8,0,8000,0,0 140, "ADPCM de 2 bits", 2,0,8000, 141, "ADPCM de 4 bits", 4,0,8000,0,0
El formato de datos de audio deseado se selecciona utilizando el mismo comando pero con un número en lugar de un signo de interrogación. Se utiliza tanto para enviar como para recibir.
Contestando llamadas
La respuesta a las llamadas generalmente se realiza con los comandos AT + VLS = n o AT # VLS = n , donde n es un número que representa el modo del módem. Para la gran mayoría de los módems, este número será 1 para contestar una llamada telefónica y 0 para colgar; otros números activan otras funciones cuando están presentes, como altavoz. Algunos módems responden en respuesta a ATA , el comando de respuesta estándar en modo de datos, pero otros módems lo interpretarán como un comando para responder realmente en modo de datos y no de voz.
Transmisión de datos de audio
Para comenzar a transmitir datos de audio, el anfitrión envía el comando AT + VTX o AT # VTX . Esto da como resultado una respuesta del módem de CONNECT o VCON . (Los módems que utilizan el conjunto de comandos "más" suelen responder CONNECT, mientras que los que utilizan el conjunto "hash" responden VCON, que significa conexión por voz).
A partir de ese momento, el módem interpreta los datos enviados desde la computadora como datos de audio de onda, utilizando el códec seleccionado por el comando AT + VSM o AT # VSM.
Los datos de audio siempre se envían al módem un poco más rápido de lo que puede reproducirlos, por lo que el módem puede almacenar una pequeña parte de ellos y reproducirlos sin problemas sin clics o estallidos causados por retrasos en el sistema operativo de la computadora. Por ejemplo, durante la reproducción de un archivo de audio de 8 kHz a una resolución de 8 bits (que crea 8.000 bytes, o 80.000 bits cuando se incluyen bits de inicio / parada, por segundo), los datos deben viajar a través del puerto serie a un mínimo de 115.200 bits. por segundo. (115,200 bit / s es la primera configuración de un puerto serie de computadora típico que es mayor que 80,000). Además, debido a una sobrecarga adicional involucrada en la duplicación de bytes DLE en la secuencia (mencionada a continuación), una pequeña cantidad de ancho de banda adicional es obligatoria. para permitir esto.
Cuando el módem desea que la computadora se pause temporalmente para que la reproducción pueda ponerse al día, baja temporalmente la señal CTS (Clear to Send) en el puerto serie RS-232. El módem vuelve a subir la señal a tiempo para que la computadora reanude el envío de datos de audio antes de que el búfer de reproducción se vacíe por completo.
Cuando la computadora desea señalar el final de los datos de audio, la mayoría de los módems esperan ver un carácter ASCII DLE (0x10), seguido de! personaje.
Debido a que el byte DLE puede ocurrir y ocurre a menudo en datos de audio normales, debe enviarse dos veces al módem cuando se debe interpretar como un byte de datos de audio.
La mayoría de los módems también aceptan una secuencia de DLE + CAN (cancelar) como señal para cancelar la reproducción de audio. La distinción es que el módem debe entender que debe abortar inmediatamente la reproducción ahora, en lugar de dejar que los datos restantes en el búfer de reproducción se completen.
Cuando el módem termina la reproducción, responde OK .
Aceleración de la reproducción
Durante la reproducción, es necesario enviar los datos de audio a una velocidad que mantenga la reproducción de audio sin problemas, pero sin enviarlos más rápido de lo que el módem puede manejar. También es deseable asegurarse de que el módem siempre pueda cancelar la reproducción y descartar cualquier audio almacenado en búfer en caso de que se cancele un mensaje. Las personas que llaman esperan la cancelación de mensajes que ya conocen las respuestas a las indicaciones de voz y brindan su respuesta temprano (y que se irritarían al verse obligadas a escuchar una indicación a la que ya han respondido).
Hay varias formas de mantener la computadora enviando datos de audio al módem a una velocidad que se mantenga al día con la reproducción sin saturar el búfer de audio.
La más sencilla es utilizar el control de flujo CTS. Existen las siguientes advertencias.
- Algunos módems de voz tienen errores en la implementación del control de flujo. En particular, una gran cantidad de conjuntos de chips Conexant a veces dejarán caer su línea CTS y nunca la volverán a activar durante la reproducción. Conexant es un conjunto de chips muy popular en los módems de voz en la actualidad y, por lo demás, implementan bien los comandos de voz, por lo que vale la pena considerar la posibilidad de solucionar este error. Algunos conjuntos de chips Conexant tampoco recuperarán CTS si el módem envía o procesa el comando "abortar reproducción" mientras CTS está inactivo.
- Algunos módems de voz ofrecen un búfer de transmisión muy grande (por ejemplo, 4 segundos de audio) junto con un error que evita que el host solicite una "reproducción interrumpida". El resultado es que si una persona que llama presiona un tono que se supone debe interrumpir un mensaje, y el anfitrión proporciona datos de audio ilimitados mediados por CTS solo, el resultado final es que el mensaje no se puede interrumpir durante al menos 4 segundos.
Una segunda forma de acelerar la reproducción implica sondear un temporizador de "tic" proporcionado por el sistema operativo de la computadora host y basado en un reloj de hardware que es independiente de la carga de la CPU del host. Esto puede estar disponible o no, y depende completamente del sistema operativo del host. Sin embargo, cuando está disponible, es extremadamente confiable. Es razonable suponer que la PC necesita adelantarse a la reproducción en un par de cientos de bytes y que el módem lo almacenará en búfer. (Los comandos AT + VBQ o AT # VBQ en los módems de voz a menudo revelarán el tamaño del búfer en bytes, y una respuesta típica es de 1 a 2 kilobytes).
Una tercera forma de acelerar la reproducción consiste en insertar mensajes DLE ficticios en el flujo de salida de modo que los datos de audio tarden una cantidad de tiempo conocida en transmitirse a través del puerto serie, y la reproducción es esencialmente sincronizada por el UART en el puerto serie.
Por ejemplo, al considerar el uso de relleno DLE ficticio, primero deben tenerse en cuenta algunas cosas. En un escenario típico, un segundo de audio puede ser de 8.000 muestras de un byte, y si un pequeño porcentaje de las muestras es igual al byte DLE y debe duplicarse, un segundo típico de audio puede ser de 8.050 bytes. El truco consiste en insertar suficientes mensajes DLE sin sentido en los bytes que el módem descartará (es decir, un DLE seguido de un byte sin ningún significado específico) de modo que haya exactamente 11.520 bytes (asumiendo un puerto serie bloqueado en 115.200 bit / s). que tardará exactamente 1 segundo en transmitirse a través del puerto serie. Aunque es posible que la latencia de interrupción en la PC host haga que se envíen un poco menos de 11.520 bytes por segundo, la mayoría de los módems de voz almacenarán en búfer suficientes bytes antes de iniciar la reproducción para permitir un pequeño sesgo aquí. Además, la PC se puede programar para convertir un segundo de audio en un poco menos de 11520 bytes (todos los módems de voz almacenarán un pequeño desbordamiento sin necesidad de control de flujo siempre que no sea más de unos pocos cientos de bytes).
Es poco probable que el relleno DLE ficticio funcione con "Winmodems" que no tienen UART físico. Tiene sentido solo con módems en serie externos que están sincronizados físicamente a una velocidad de bits específica mediante un generador de reloj detrás del puerto en serie externo.
Grabando datos de audio
El método para grabar datos de audio es el mismo, excepto que el comando es AT + VRX o AT # VRX , y el módem transmite datos de audio mientras la computadora los recibe. El control de flujo RTS / CTS no se usa aquí (la computadora debe aceptar todos los datos de audio que recibe, y el módem automáticamente marca su transmisión para que coincida con la frecuencia de muestreo de audio).
El módem nunca deja de transmitir hasta que la computadora le dice que se detenga, lo cual suele ser con CTRL-C. Los datos siempre terminan con DLE +! Y todos los bytes DLE que ocurren naturalmente en el flujo se envían dos veces para diferenciarlos de los mensajes DLE normales.
Antes, durante y después de la grabación, el módem puede notificar al anfitrión de la computadora sobre eventos específicos que incluyen, entre otros, los siguientes:
- Se detectaron pulsaciones de teclas por tonos
- Silencio detectado
- Se detectó inversión de polaridad de línea (a menudo significa que la persona que llama cuelga)
- Tono de marcación detectado
- Tono de fax detectado
Cuando el módem quiere informar al host sobre estos, envía un byte DLE, más un mensaje (generalmente) de 1 byte que describe el evento. La lista de eventos admitidos varía según el módem, pero generalmente un dígito (así como * y #) significa que se presionaron los tonos al tacto, y la letra "s" significa silencio detectado. Algunos módems informan sólo un evento por cada pulsación de tecla de tono, mientras que otros informan una pulsación de tecla repetidamente hasta que se suelta la tecla y luego un evento especial de "tecla soltada".
Terminar una llamada de voz
Cualquiera de los siguientes comandos generalmente hace que el módem cuelgue y finalice una llamada de voz: AT + VLS = 0 , AT # VLS = 0 , ATH , ATZ . Dejar caer la señal RS-232 DTR (terminal de datos listo) a menudo también logra esto. El módem permanece en modo de voz (excepto en el caso de ATZ).
Los módems de voz no cuelgan automáticamente incluso cuando lo hace la persona que llama en el otro extremo. Pueden informar los eventos de colgado, tono de marcación o silencio, pero depende de la computadora actuar en consecuencia. Si cuando el módem está grabando, la persona que llama cuelga y la computadora no reacciona, el módem continuará proporcionando la grabación de audio de todo lo demás que se escuche en la línea, como tonos de marcación, mensajes de error de la compañía telefónica, etc.
Ver también
Referencias
- AT manual de referencia de comandos para conjuntos de chips Rockwell, Conexant y Lucent. (Cada fabricante de chipset produce un manual con el mismo título, seguido del nombre del producto al que se aplica)
- Documentación de soporte técnico de Zoom, referencias de comandos AT
- Unión Internacional de Telecomunicaciones (febrero de 1998), Control de funciones relacionadas con la voz en un DCE por un DTE asíncrono , Serie V: Comunicación de datos a través de la red telefónica: Procedimientos de control, Unión Internacional de Telecomunicaciones, Recomendación UIT-T V.253
- Mirho, Charles (agosto de 1996), "Para obtener más información sobre las extensiones de módem de voz para Windows 95, presione 1 ahora". , Microsoft Systems Journal ,
El estándar AT de Hayes ayudó a promover la aceptación generalizada de los módems de datos porque los programas podían simplemente enviar el AT-mumble-this y AT-mumble-that apropiado, y cualquier módem que habla el estándar AT sabrá qué hacer. Un estándar similar, AT + V, también parece haber surgido para los módems de voz. El conjunto de comandos AT + V consta de comandos con prefijo AT de Hayes y comandos de voz con prefijo + V. AT + V está documentado como el estándar IS-101 de ANSI / TIA / EIA titulado "Interfaces digitales de fax - Estándar interino de control de voz para DCE asíncrono". Un seguimiento de esta especificación es el PN-3131 del Subcomité Técnico TR-29.2 de la TIA.