[Python] rumori o suoni con python in ambiente linux

Lorenzo Sutton lorenzofsutton a gmail.com
Ven 18 Lug 2014 21:21:33 CEST


On 16/07/14 15:14, Vincenzo Fortunati wrote:
> Ho fatto alcuni programmi con Python 2.5 in ambiente Windows e non ho
> trovato problemi per riprodurre i suoni, sia il beep del sistema che
> rumori o suoni con "winsound". In ambiente Linux (Ubuntu), invece, non
> ne sono stato capace, neppure il beep del sistema con le istruzioni:
>        mess = Message()
> mess.bell(displayof=0)

Per questo si può stampare il carattere BEL [1]:

print('\a')


 > C'è un modulo equivalente a winsound per Linux?


Risposta corta:
"Ni". Non così direttamente, ma usando un programma esterno chiamato da 
subprocess (vedi quasi alla fine su come farlo).

Risposta lunga:

In generale, per la riproduzione di suoni (ad esempio un file wav), 
farlo in maniera cross platform risulta ancora problematico in molti 
linguaggi di programmazione, perché la situazione è molto frammentata. 
Ogni sistema operativo usa "sistemi" (alquanto) diversi per riprodurre 
suoni. A sua volta l'audio in linux è molto frammentato: ad esempio ci 
sono OSS (obsoleto), Alsa, pulsaudio e jack solo per nominare i quattro 
sistemi più usati, ognuno con peculiarità diverse.

Ora, esistono librerie (con port per Python) che gestiscono l'audio in 
maniera unificata e multipiattaforma: la già citata PyGame; una libreria 
abbastanza popolare per l'audio è Portaudio, che ha un port PyAudio [2], 
e poi ce ne sono altre, ad esempio  pygstreamer, molto potente (fa molto 
più che solo audio) ma molto più complicato.. vedi ad es. [3].

Detto questo, una maniera un po' 'quick and dirty' di suonare un file 
audio su Linux sarebbe usare subprocess per chiamare un player da linea 
di comando come aplay (presente sul 99.9% di sistemi con una scheda 
audio) o play (da SoX [4]) per cose più sofisticate, ad esempio con aplay:

import subprocess
ubprocess.Popen(['aplay','mysound.wav'])

Spero sia utile.
Lorenzo.

[1] http://en.wikipedia.org/wiki/Bell_character
[2] http://people.csail.mit.edu/hubert/pyaudio/
[3] 
http://www.jonobacon.org/2006/08/28/getting-started-with-gstreamer-with-python/
[4]: http://sox.sourceforge.net/


> Grazie. Enzo
>
>
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>



Maggiori informazioni sulla lista Python