Estou procurando uma biblioteca Python bem mantida que permita reproduzir arquivos de áudio no meu Raspberry Pi usando a saída de áudio padrão.
Até agora, tentei várias, mas nenhuma delas parece funcionar. Embora o pyglet funcione bem no meu computador comum, ele causa um erro no Raspberry Pi. Existe uma biblioteca Python que foi provada como fácil de usar?
Respostas:
Eu recomendo o Pygame amplamente popular . Posso estar errado, mas acredito que ele esteja pré-instalado no Pi. Você pode usar o Pygame Mixer Music Module para reproduzir arquivos de áudio. Eu incluí alguns exemplos de código abaixo.
Supondo que tenhamos um arquivo de áudio chamado
myFile.wav
.NOTA: Se isso falhar, vá ao terminal e atualize seu sistema com
e tente novamente.
fonte
espeak
muito bem, mas não isso.Eu precisava de um script para tocar uma música de trinta segundos em segundo plano, enquanto respondia a outras informações do usuário. Eu então queria que terminasse a música em algum evento.
Suponho que não seja particularmente elegante, mas abri um canal para um processo MPlayer em segundo plano.
Então, quando eu queria encerrar o processo do MPlayer, simplesmente escrevi "q" para sair do canal.
Veja na documentação do MPlayer todos os tipos de comandos que você pode transmitir dessa maneira para controlar a reprodução.
Espero que seja um pouco útil!
fonte
Outra opção é usar
mpg321
e chamar a partir da linha de comando.Então, em Python:
Pygame é quase certamente mais robusto, mas depende, suponho, de quais são suas necessidades.
fonte
Eu recomendaria pyglet em vez de pygame se você não precisar de gráficos. Na minha opinião, é mais simples, mais elegante e melhor mantido. Então, novamente, espero que seja uma questão de gosto.
fonte
O Pygame oferece uma maneira fácil e agradável de carregar e reproduzir sons em vários canais.
fonte
Você pode usar vários players externos através de pipes. No entanto, você quase sempre experimentará uma perda de velocidade. Há também um problema com o controle de reprodução.
Eu recomendo que você pyaudio, funciona bem.
Se você quiser reproduzir arquivos compactados também, ficarei livre para apontar para o meu módulo decoder.py. Você pode encontrá-lo no PyPI.
Ele também usa subprocessos, mas chama decodificadores em vez de players. Eles não usam muita CPU e alguns deles sabem como usar a aceleração de hardware. Você pode usar o pyaudio ou algo assim para gerar os dados de áudio não processados. Se quiser, você pode até usar o pygame utilizando pygame.sndarray. Dessa forma, você pode reproduzir mais formatos do que o pygame suporta.
Tentei decoder.py no ambiente da interface gráfica do PyQT, com o pyaudio e também usando o aplay como player externo. Isso foi no Raspberry Pi B.
Os resultados foram bastante satisfatórios em ambos os casos.
A simplicidade pode ser questionada.
O decoder.py em si é muito simples, mas você deve combiná-lo com outras bibliotecas e isso aumenta as linhas de código.
Há um exemplo de como reproduzir arquivos incluídos no decoder.py.
fonte
Estou executando o OSMC (Debian) e tenho som para reproduzir através dos alto-falantes da minha TV, conectados por HDMI. https://youtu.be/p2ljmTE67gs
Meu método foi baseado na solução acima postada por @xxmbabanexx e aqui . Basicamente, eu tive que adicionar
dtparam=audio=on
a/boot/config.txt
fonte