reproducir - read mp3 python
Leer MP3 en Python 3 (5)
Creo que lo mejor para hacer esto y que también es compatible con Python 3.x es:
https://pypi.python.org/pypi/mplayer.py/
Te recomiendo que mires el código git o google de Darwin M. Bautista:
Y aquí hay un ejemplo de (según lo provisto por él):
from mplayer import Player, CmdPrefix
# Set default prefix for all Player instances
Player.cmd_prefix = CmdPrefix.PAUSING_KEEP
# Since autospawn is True by default, no need to call player.spawn() manually
player = Player()
# Play a file
player.loadfile(''mp3_filename'')
# Pause playback
player.pause()
# Get title from metadata
metadata = player.metadata or {}
print metadata.get(''Title'', '''')
# Print the filename
print player.filename
# Seek +5 seconds
player.time_pos += 5
# Set to fullscreen
player.fullscreen = True
# Terminate MPlayer
player.quit()
Lista de codecs de audio soportados:
- Audio MPEG layer 1, 2, and 3 (MP3)
- Audio AC3 / A52, E-AC3, DTS (Dolby Digital) (software o SP / DIF)
- AAC (audio MPEG-4)
- WMA (DivX Audio) v1, v2
- WMA 9 (WMAv3), audio Voxware, ACELP.net, etc. (utilizando DLL x86)
- RealAudio: COOK, SIPRO, ATRAC3 (usando bibliotecas Real)
- RealAudio: DNET y codecs antiguos
- QuickTime: Qclp, Q-Design QDMC / QDM2, MACE 3/6 (utilizando bibliotecas QT), ALAC
- Audio Ogg Vorbis
- Audio VIVO (g723, Vivo Siren) (usando DLL x86)
- alaw / ulaw, (ms) gsm, pcm, * adpcm y otros formatos de audio antiguos simples
Lo que quiero hacer es simplemente
mp3 = read_mp3(mp3_filename)
audio_left = mp3.audio_channels[0]
donde audio_left contendrá datos de audio PCM sin procesar.
Estaba mirando Reproducir un sonido con Python , pero la mayoría de los módulos sugeridos aún no están adaptados a Python 3. Si es posible, me gustaría evitar tener que instalar una biblioteca de desarrollo de juegos en toda regla.
Soy un completo principiante de Python, así que me gustaría comenzar a usar Python 3.
Estoy considerando usar FFmpeg como un subproceso. Hay un contenedor de Python llamado pyffmpeg, pero tuve dificultades para instalarlo en mi sistema (OS X 10.7.3).
También puede consultar el código aquí para llamar a FFmpeg como un subproceso de Python: https://github.com/albertz/learn-midi/blob/master/decode.py
Para hacerlo más fácil, convertiría con algunas herramientas mp3 a wav, ya sea:
$ ffmpeg -i foo.mp3 -vn -acodec pcm_s16le -ac 1 -ar 44100 -f wav foo.wav
or
$ mpg123 -w foo.wav foo.mp3
Luego lee el WAV con una de las bibliotecas de Python WAV . Recomiendo PySoundFile porque funciona con la mayoría de los WAV generados e instalados sin problemas (a diferencia de scikits.audiolab
).
Nota: A pesar de que scipy.io.wavfile.read()
me dio una advertencia de "WavFileWarning: Desconocido de bytes de formato", también cargó el archivo correctamente.
Se puede hacer con pydub:
import array
from pydub import AudioSegment
from pydub.utils import get_array_type
sound = AudioSegment.from_file(file=path_to_file)
left = sound.split_to_mono()[0]
bit_depth = left.sample_width * 8
array_type = get_array_type(bit_depth)
numeric_array = array.array(array_type, left._data)
Terminé usando un subproceso mpg123 para convertir el mp3 a wav, y luego uso scipy.io.wavfile.read para leer el archivo wav.