Claro, você pode usar o comando "pactl" e "pacmd".
Um exemplo para um alto-falante USB externo + alto-falantes internos, com reprodução de música.
$ pactl list sinks short | awk -F '\t' '{print ,,}' # Print available outputs
0 alsa_output.pci-0000_00_1b.0.analog-stereo RUNNING
1 alsa_output.usb-Logitech_Logitech_Z-5_Speakers-00-Speakers.analog-stereo SUSPENDED
O primeiro com o índice 0 é o speak interno, a música está sendo executada neste sumidouro. Outro com índice 1 é o alto-falante USB externo.
$ pactl stat | grep Sink # Show the current output device (it's the internal speaker)
Default Sink: alsa_output.pci-0000_00_1b.0.analog-stereo
$ pacmd set-default-sink 1 # Make the external USB speaker as desired output device.
Se você não estiver apostando nada durante a troca, você pode parar por aqui.
(Nota: para ter certeza de que realmente funciona, seria melhor fazer isso com algo sendo reproduzido e mover o fluxo da seguinte forma).
Se estiver tocando alguma coisa, você notará que a música ainda está em execução no dispositivo antigo e precisará movê-la para o dispositivo desejado:
$ pactl list sink-inputs | grep 'Input' # Get the stream ID
Sink Input #23
$ pacmd move-sink-input 23 1 # Move it to the USB speaker
Voilà! Você pode compor uma base de script sobre isso.
Referência: Como mudar pulseaudio sink com "pacmd set-default-sink" durante a reprodução?