it-swarm.com.de

Lesen Sie MP3 in Python 3

Was ich tun möchte, ist einfach

mp3 = read_mp3(mp3_filename)
audio_left = mp3.audio_channels[0]

wo audio_left rohe PCM-Audiodaten enthält.

Ich habe nach einen Sound mit Python abspielen gesucht, aber die meisten der vorgeschlagenen Module sind noch nicht auf Python 3 portiert. Wenn möglich, möchte ich vermeiden, dass Sie eine vollwertige Game-Entwickler-Bibliothek installieren müssen.

Ich bin ein Python-Anfänger und möchte Python 3 verwenden.

22
Andreas Jansson

Am Ende habe ich einen mpg123-Subprozess verwendet, um die mp3-Datei in wav zu konvertieren, und dann verwende ich scipy.io.wavfile.read, um die wav-Datei zu lesen.

4
Andreas Jansson

Um es einfacher zu machen, würde ich mit einigen Tools mp3 in wav konvertieren:

$ ffmpeg -i foo.mp3 -vn -acodec pcm_s16le -ac 1 -ar 44100 -f wav foo.wav
or
$ mpg123 -w foo.wav foo.mp3

Dann lesen Sie die WAV mit einer der Python-WAV-Bibliotheken . Ich würde PySoundFile empfehlen, da es mit den meisten generierten WAVs funktioniert und ohne Probleme installiert wird (im Gegensatz zu scikits.audiolab).

Hinweis: Obwohl scipy.io.wavfile.read() mir die Warnung "WavFileWarning: ungewohnte Formatbytes" gab, wurde die Datei auch richtig geladen.

9
Wernight

Ich überlege, FFmpeg als Unterprozess zu verwenden. Es gibt einen Python-Wrapper namens pyffmpeg, aber ich hatte Schwierigkeiten, ihn auf meinem System zu installieren (OS X 10.7.3).

Sie können sich auch den Code für den Aufruf von FFmpeg als Unterprozess von Python ansehen: https://github.com/albertz/learn-midi/blob/master/decode.py

6
composer314

Kann mit pydub gemacht werden:

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)
4
GuySoft

Ich glaube, das Beste, um dies zu tun und das auch mit Python 3.x kompatibel ist, ist:

https://pypi.python.org/pypi/mplayer.py/

Ich empfehle Ihnen dringend, sich den Darwin M. Bautistas git oder google code anzusehen:

Und hier ist ein Beispiel von (wie von ihm bereitgestellt):

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()

Liste der unterstützten Audio-Codecs:

  • MPEG-Layer 1, 2 und 3 (MP3) -Audio
  • AC3/A52, E-AC3, DTS (Dolby Digital) -Audio (Software oder SP/DIF)
  • AAC (MPEG-4-Audio)
  • WMA (DivX Audio) v1, v2
  • WMA 9 (WMAv3), Voxware-Audio, ACELP.net usw. (unter Verwendung von x86-DLLs)
  • RealAudio: COOK, SIPRO, ATRAC3 (unter Verwendung von Real-Bibliotheken)
  • RealAudio: DNET und ältere Codecs
  • QuickTime: Qclp, Q-Design QDMC/QDM2, MACE 3/6 (mit QT-Bibliotheken), ALAC
  • Ogg Vorbis Audio
  • VIVO-Audio (g723, Vivo-Sirene) (mit x86-DLL)
  • alaw/ulaw, (ms) gsm, pcm, * adpcm und andere einfache alte Audioformate
1
Mansueli

Sie könnten Librosa verwenden:

import librosa
y, sr = librosa.load('your_file.mp3')

Weitere Informationen: https://github.com/librosa/librosa

1
Nir