Obrigado por todas as respostas. Isto acabou por ser uma experiência bastante de aprendizagem. Em particular, aprendi que o linux ainda tem algumas áreas ruins e a configuração do som é (talvez a maior) uma delas.
É muito fácil inserir a entrada do microfone em um arquivo (ou soquete) e, intuitivamente, ser igualmente simples de catar um arquivo em qualquer coisa que o microfone ler - de modo que tudo o que for lido mic pode ler o referido arquivo de som. Isto, no entanto, infelizmente não é o caso.
Como resultado, acabei modificando o programa de escuta para que ele pudesse ouvir em um soquete em vez do entrada de mic em bruto. Eu então escrevi um cliente perl simples para redirecionar a entrada do microfone para o soquete,
#!/usr/bin/perl -w
use strict;
use warnings;
use IO::Socket;
my $dspdev = '/dev/dsp';
my $port = 8000;
my $host = "127.0.0.1";
my $sock = new IO::Socket::INET(
PeerAddr => $host,
PeerPort => $port,
Type => SOCK_STREAM,
Proto => "tcp",
) || die "Couldn't open socket: $!\n";
open(DSP, "<", $dspdev)||die "can't open $dspdev: $!\n";
while( 1 ) {
my $rbuf = "";
sysread(DSP, $rbuf, 4096);
syswrite($sock, $rbuf);
}
Neste estágio, isso é tudo que eu precisava, mas parece que é necessário um pouco mais de esforço do que deveria. Eu encontrei uma solução, mas na verdade não respondi à minha pergunta original, então deixarei isso em aberto.
edit: decidiu fechar isso, já que não parece atrair mais atenção.