Estoy tratando de guardar los mensajes de correo de voz del teléfono Verizon Fios con la mejor calidad posible. Los mensajes de correo de voz están disponibles en línea , pero solo para jugar (reproductor basado en Java), sin guardar. Oficialmente, no hay una forma compatible de cómo guardar mensajes de voz digitales originales como archivos del servicio Fios Digital Voice (sin servicio de pago, sin nada, sin razón alguna).
Mi única idea era grabar datos digitales del reproductor mientras se dirigía a la tarjeta de sonido. Intenté la configuración de Linux ALSA con el dispositivo de bucle.
# cat /etc/asound.conf
# default device
pcm.!default {
type plug
slave.pcm "loop"
}
# output device
pcm.loopout {
type dmix
ipc_key 328211
slave.pcm "hw:Loopback,0,0"
}
# input device
pcm.loopin {
type dsnoop
ipc_key 686592
slave.pcm "hw:Loopback,1,0"
}
# duplex plug device
pcm.loop {
type plug
slave {
pcm {
type asym
playback.pcm "loopout"
capture.pcm "loopin"
}
}
}
Esto parece estar funcionando y graba audio, por ejemplo, cuando se reproduce algo en Youtube, la salida de audio va al dispositivo de bucle (salida de audio predeterminada) y puedo capturarlo (no estoy seguro de cómo funciona exactamente, probé 44.1kHz y 48 Khz )
arecord -f cd -D loop | aplay -f cd -D hw:0,0
arecord -f dat -D loop | aplay -f dat -D hw:0,0
Pero cuando traté de capturar la salida del reproductor de audio Java de Verizon, es confusa y la longitud no parece coincidir. Sospecho que podría ser mono a 8 kHz e intenté diferentes cosas, cambiando la frecuencia y los formatos, pero nada ayudó.
¿Tienes alguna idea de lo que está mal aquí y cómo grabar los mensajes? ¿El problema está en la configuración de ALSA? ¿O posiblemente un problema de kernel? (Estoy usando 3.4.88). Cualquier idea sería muy bienvenida.
Respuestas:
Pregunta interesante: hace mucho tiempo estaba pensando en la grabación simple de audio y video digital, posible a través de algunos controladores de audio y video virtuales, pero nunca llegué allí.
Usé su archivo de configuración y tuve exactamente el mismo problema que usted describió. (Quité los controladores de compatibilidad OSS de ALSA para estar seguro, probé diferentes núcleos, no parecía importar, y usé Debian Wheezy)
todos los comandos anteriores reproducen OK para los altavoces
ahora grabando desde loop y tocando al frente
todo enviando audio al bucle y reproduciendo a los altavoces OK
pero aquí el sonido está roto, ¡muy distorsionado! Solo estoy jugando con el dispositivo predeterminado. ¡La reproducción especificada a través del bucle funcionó!
Después de probar varios cambios, probé esta modificación de asound.conf
¡Resolvió el problema! Cuando el dispositivo predeterminado es loopout, funciona. Intentar
arecord -f cd -D loopin | aplay -f cd -D front
no tuvo ningún efecto. No estoy seguro de cómo funciona el bucle, pero esto fue capaz de capturar el audio. O un error en ALSA? ¿Estás usando Debian? ¿Funciona para ti?Notas a otras sugerencias para resolver el problema:
Para volcar la transmisión de red: supongo que si la aplicación no quiere que guarde datos, la transferencia se cifrará (https ???). En caso de que el reproductor no verifique el certificado del servidor, ¿cómo captura los datos? ¿Cuál es tu método rápido y fácil favorito para convertirte en hombre en el medio y capturar la transmisión?
Pulseaudio: ¿Cómo lo ejecuto en Debian Wheezy? El Wiki dice que simplemente funciona. No lo hizo.
¿Cómo soluciono los problemas de lo que está sucediendo? (Herramientas, diag?)
Jack: No encontré instrucciones simples sobre cómo instalar Jack. Parece bastante complejo. ¿Se supone que Pulseaudio se está ejecutando? La documentación es confusa. ¿Tiene un enlace para un buen inicio rápido (cómo instalar y probar para asegurarse de que funciona)?
¿Asume que la mayoría de las aplicaciones de audio (como el reproductor Fios Voicemail Java) podrán reproducirse en Pulseaudio o Jack y no enviar audio a ALSA?
fuente
¿Te acordaste de "modprobe snd-aloop"? Lo he probado y funciona para mí con su asound.conf en youtube, pandora, tunein, vonage y este reproductor java . Podría ser algo específico de Fios, pero no tengo Fios para probar. ¿Puedes encontrar otro sitio disponible públicamente que también cause el problema?
Además, intente grabar en un archivo, luego reprodúzcalo:
fuente
Mejor idea
En primer lugar, leyendo tu pregunta, no lo haría así. Estaría husmeando la red e intentando capturar la transmisión. Probablemente esté en un lugar bastante predecible que se pueda programar con una simple llamada a
tshark
. Sin embargo, esa es otra pregunta.Mejora sobre ALSA
Si bien su método es un enfoque válido, no usaría ALSA. ALSA es una capa de abstracción de hardware. Estaría usando el demonio de sonido que está en casi todas partes PulseAudio. Eso tiene más sentido. Crea un sumidero nulo.
Ese comando te devolverá
module id
. Eso no nos sirve de nada.Ahora solo establezca la variable ambiental
PULSE_SINK
. (sink_name en el ejemplo anterior es "MySink")O, inicie un programa con
PULSE_SINK=MySink
y ese sumidero nulo capturará la secuencia.Cuando quiera transmitirlo a un archivo, simplemente ejecute:
Opus de baja tasa de bits es la mejor apuesta para grabar conversaciones telefónicas.
Notas al pie:
sox
a la secuencia para eso. Verman sox
, buscarvad
.--downmix-mono
en una transmisión estéreo. Es muy posible que desee experimentar enviando elchannels=1
argumentomodule-null-sink
en el primer paso. Los teléfonos son todos mono.fuente
Después de pasar más de una hora intentando configurar en vano el dispositivo ALSA loopback en Debian, la solución más efectiva y que requirió menos tiempo fue soldar un dispositivo real en 5 minutos.
En serio, volví a compilar el kernel para habilitar el bucle de retorno de ALSA, modifiqué /etc/asound.conf y ~ / .asound.rc sin resultados.
fuente
Recomiendo mucho usar JACK. Es un acrónimo recursivo para JACK Audio Connection Kit. Está diseñado exactamente para lo que está haciendo, enrutando el audio de una pieza de software, en su caso la herramienta de reproducción Java, a otra, un software de grabación. Es muy bueno para la grabación de baja latencia, lo que creo que puede ayudarlo a obtener la calidad que está buscando.
Con él, puede enrutar fácilmente el audio desde cualquier fuente en su computadora a muchas herramientas de grabación diferentes. De hecho, hay una interfaz gráfica de usuario muy agradable llamada QjackCtl .
Esta página cubre cómo enrutar audio desde el navegador (Flash y posiblemente su herramienta Java) a Jack. Cómo se hace esto depende de su sistema.
Por ejemplo:
Modifique su
~/.asoundrc
o~/asound.conf
:Entonces deberías poder usar
fuente
pavucontrol
hará lo mismo que ustedQjackCtl
, y siempre puede moversepacmd move-sink-input
.pasuspender -- jackd
. Sin embargo, si el póster tiene problemas de calidad, puede ser valioso probar algo tan fácil. Además, QjackCtl hace que sea muy fácil ajustar las configuraciones que brindan retroalimentación visible sobre la latencia y xruns, que comúnmente son una causa de audio confuso .