阅读Python 3中的MP3
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阅读Python 3中的MP3相关的知识,希望对你有一定的参考价值。
我想做的只是简单
mp3 = read_mp3(mp3_filename)
audio_left = mp3.audio_channels[0]
其中audio_left将包含原始PCM音频数据。
我在看Play a Sound with Python,但大多数建议的模块还没有移植到Python 3。如果可能的话,我想避免安装一个完全成熟的游戏开发库。
我是一个完整的Python初学者,所以我想开始使用Python 3。
为了更容易,我将一些工具mp3转换为wav,或者:
$ ffmpeg -i foo.mp3 -vn -acodec pcm_s16le -ac 1 -ar 44100 -f wav foo.wav
or
$ mpg123 -w foo.wav foo.mp3
然后用one of the python WAV libraries阅读WAV。我建议使用PySoundFile,因为它适用于大多数生成的WAV并且安装没有问题(与scikits.audiolab
相反)。
注意:尽管scipy.io.wavfile.read()
给了我一个“WavFileWarning:Unfamiliar format bytes”警告,但它也正确地加载了文件。
我正在考虑使用FFmpeg作为子进程。有一个名为pyffmpeg的Python包装器,但我在系统上安装它时遇到了困难(OS X 10.7.3)。
您可能还想查看此处的代码,将FFmpeg作为Python的子进程调用:https://github.com/albertz/learn-midi/blob/master/decode.py
可以用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)
我最终使用mpg123子进程将mp3转换为wav,然后我使用scipy.io.wavfile.read来读取wav文件。
我相信最好的做到这一点,并且与Python 3.x兼容的是:
https://pypi.python.org/pypi/mplayer.py/
我强烈建议你看看Darwin M. Bautista的git或google code:
这是一个例子(由他提供):
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()
支持的音频编解码器列表:
- MPEG层1,2和3(MP3)音频
- AC3 / A52,EAC3,DTS(杜比数字)音频(软件或SPDIF)
- AAC(MPEG-4音频)
- WMA(DivX Audio)v1,v2
- WMA 9(WMAv3),Voxware音频,ACELP.net等(使用x86 DLL)
- RealAudio:COOK,SIPRO,ATRAC3(使用Real库)
- RealAudio:DNET和旧的编解码器
- QuickTime:Qclp,Q-Design QDMC / QDM2,MACE 3/6(使用QT库),ALAC
- Ogg Vorbis音频
- VIVO音频(g723,Vivo Siren)(使用x86 DLL)
- alaw / ulaw,(ms)gsm,pcm,* adpcm和其他简单的旧音频格式
你可以使用librosa:
import librosa
y, sr = librosa.load('your_file.mp3')
更多信息:https://github.com/librosa/librosa
以上是关于阅读Python 3中的MP3的主要内容,如果未能解决你的问题,请参考以下文章