11 de juliol 2017

Transmitir música y voz en una videoconferencia con Linux

Este sencillo tutorial nos permitirá emitir los sonidos de nuestro ordenador juntamente con nuestra voz en una conversación de hangouts, appear.in, skype o similares, siendo válido en general para cualquier programa que grabe audio desde el micrófono.
Los únicos requisitos previos son tener instalado el servidor de sonido pulseaudio y su mezclador pavucontrol.

Empezamos. Abrimos un terminal y tecleamos los siguientes comandos:
pactl load-module module-null-sink sink_name=mix
pactl load-module module-loopback sink=mix
pactl load-module module-loopback sink=mix
Con esto lo que hemos hecho es crear un dispositivo virtual de salida al que hemos llamado "mix" y dos flujos virtuales conectados a él.
Al abrir el control de volumen de pulseaudio (pavucontrol) veremos que aparecen los nuevos elementos creados.
En la pestaña de grabación tendremos los dos flujos virtuales o loopbacks. A uno le asignaremos el monitor de la salida de audio y al otro el micrófono. Según el sistema y los dispositivos que tengáis los nombres variarán; consultad las pestañas de dispositivos de entrada y salida para identificarlos.

Enviamos la salida de audio del PC (música) y el micrófono al dispositivo virtual

El siguiente paso será iniciar la videollamada o el programa de grabación que vayamos a usar. En la pestaña grabación del mezclador aparecerá dicho programa, al que indicaremos que “escuche” del monitor de la salida virtual (null output). Aquí es importante recalcar que el programa sólo aparecerá en el mezclador si está grabando o transmitiendo.

Hangouts (en Chrome) capturando el sonido del dispositivo virtual

Y listo. Tened en cuenta que el volumen de la música que sale por el flujo virtual (la que oyen nuestros interlocutores) es independiente del volumen interno que oímos nosotros, por si hubiera que hacer ajustes.

Nota para Hangouts: en las opciones de la videollamada debéis cambiar la calidad de sonido de voz a estudio, de lo contrario la música no se escuchará con buena calidad.

La música del reproductor se escucha en Hangouts

Una vez terminemos quizá queramos desmontar el tinglado. La manera rápida de eliminar el dispositivo y flujos virtuales creados es escribiendo el siguiente comando en un terminal:
pactl unload-module module-null-sink
Esto eliminará todos los dispositivos virtuales y con ellos los flujos asociados a ellos.
La forma elegante de hacerlo es eliminar cada módulo usando su número de identificación (que recibimos por terminal al crearlo) usando el siguiente comando:
pactl unload-module [número módulo]
Los módulos cargados y descargados

En cambio si lo que queremos es conservarlos de forma permanente para no tener que crearlos cada vez, lo que tendremos que hacer es añadir los comandos al fichero /etc/pulse/default.pa .

Para poder agregar efectos y filtros o hacer conexiones más complejas tendríamos que instalar el servidor de sonido JACK, pero eso ya será para otra ocasión.


Bonus track: reducción de eco/ruido


Pulseaudio incorpora un módulo de reducción de eco y ruido para el micrófono, pero no está cargado por defecto:
pactl load-module module-echo-cancel
Una vez en marcha nos aparecerá como un elemento nuevo en el mezclador. Para usarlo, allí donde seleccionábamos el micrófono escogeremos el que incluye la coletilla echo cancelled with…

Cap comentari:

Publica un comentari a l'entrada