Si tenemos acceso por ssh a otro ordenador, ambos con micrófono y altavoces, podemos redirigir el sonido en ambos sentidos, es decir, podemos conseguir cosas como:

Dispositivos de sonido en Ubuntu Maverick Meerkat

Uno de los cambios de Ubuntu Maverick Meerkat (10.10) fue la desaparición del dispositivo /dev/dsp y otros, como /dev/mixer, /dev/sndstat y /dev/audio, al utilizar la interfaz ALSA en detrimento de la OSS API.

Para los programas que tengan problemas para utilizar la API ALSA, existen los comandos esddsp, que permite redirigir datos de audio no-esd a través de esd y padsp, que permite lo mismo pero mediante PulseAudio.

Pulseaudio diagram

Fuente: es.wikipedia.org

Redirigir el micrófono local a los altavoces remotos

Si disponemos de /dev/dsp en ambas máquinas podemos utilizar dd:

bash $ dd if=/dev/dsp | ssh -c arcfour -C user@host dd of=/dev/dsp

La opción -c permite especificar el tipo de cifrado, y la opción -C que se utilice compresión de datos, utilizando el mismo algoritmo empleado por gzip.

También podemos utilizar aplay:

bash $ arecord -f dat | ssh -C user@host aplay -f dat

La opción -f permite especificar el formato:

  • -f cd (16 bit little endian, 44100, stereo) [-f S16_LE -c2 -r44100]
  • -f cdr (16 bit big endian, 44100, stereo) [-f S16_BE -c2 -f44100]
  • -f dat (16 bit little endian, 48000, stereo) [-f S16_LE -c2 -r48000]
  • Por defecto, se utiliza (8 bit little endian, 8000, mono) [-f U8 -c1 -r8000]

Redirigir el micrófono remoto a los altavoces locales

Como en el caso anterior, pero a la inversa:

bash $ ssh -C user@host arecord -f dat | aplay -f dat

Si queremos guardar el audio que recibimos mientras lo escuchamos:

bash $ ssh -C user@host arecord -f dat | tee audio.wav | aplay -f dat

Supongo que también se debe poder utilizar dd para traer el sonido captado por un micrófono remoto, pero no lo he podido probar.

Enviar texto y que se oiga por los altavoces remotos

El texto puede ser algo que acabemos de escribir, el contenido de un fichero o la salida por stdout de un script.

Para esto, podemos utilizar cualquier sintentizador de voz, por ejemplo, espeak o festival.

bash $ echo "Hola, mundo" | ssh user@host espeak -ves $ echo "Hello, world" | ssh user@host espeak $ echo "I am an alien" | ssh user@host festival --tts $ echo "Una ranita iba caminando" | ssh user@host festival --tts --language spanish $ cat textos.txt | ssh user@host espeak -ves $ w3m -dump http://www.gnu.org/licenses/gpl-2.0.txt | ssh user@host espeak

Si queremos parar la locución, deberemos iniciar sesión en la máquina remota y matar el proceso espeak o festival. Dicho sea de paso, para escuchar la voz en castellano usando el festival hay que instalar el paquete festvox-ellpc11k.

Recibir texto y que se oiga por nuestros altavoces

El caso inverso al anterior:

bash $ ssh user@host cat textos.txt | espeak -ves $ ssh user@host w3m -dump http://www.gnu.org/licenses/gpl-2.0.txt | espeak

Reproducir un archivo de audio en los altavoces remotos

Para escuchar un archivo de audio remoto utilizaremos mplayer:

bash $ cat podcast.ogg | ssh -C user@host mplayer -

Reproducir un archivo de audio de la máquina remota en local

Al revés del caso anterior.

bash $ ssh -C user@host cat podcast.ogg | mplayer -

Reproducir el sonido de un video en los altavoces remotos

Es idéntico al caso de un archivo de audio, pero le pasamos a mplayer el argumento -vc null para que no decodifique el vídeo.

bash $ ssh -C user@host cat podcast.ogg | mplayer -vc null -

Reproducir el sonido de un vídeo remoto en nuestra máquina

Podemos conseguir que se vea y escuche el vídeo:

bash $ ssh -C user@host cat movie.ogv | mplayer -

O que sólo se escuche el audio:

bash $ ssh -C user@host cat movie.ogv | mplayer -vc null -


Entradas relacionadas


Published

Category

admin

Tags

Contacto