一、准备工作
在使用转换时,可以直接使用python中的模块进行调用,还有一种直接使用ffmpeg程序在命令窗下执行的方法,暂时没有实现。
1.1 模块的安装
1)AudioSegment的模块在pydub中调用,安装pydub。
安装方式
https://github.com/jiaaro/pydub#installation
2)安装wave模块用来读取wav格式文件
pip install wave
1.2 工具的安装
数据的转换主要是使用ffmpeg程序,下载地址
https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z
下载后将ffmpeg.exe文件加载到环境变量中,也可以将该文件放到运行目录下。# 将文件放入目录下比较方便。
二、python的转换代码
from pydub import AudioSegment
impot wave
class Trans():
def mp3_to_wav(self, mp3_name, wav_name):
"""
mp3格式转wav格式
:param mp3_name: mp3的文件名
:param wav_name: 保存wav的文件名
:return:
"""
try:
# 转换
song = AudioSegment.from_mp3(mp3_name)
# 输出
wave_file = song.export(wav_name, format="wav")
# wav_data 是wav的数据
wav_data = wave_file.read()
except Exception as e:
print("mp3转换为wav过程出错{}".format(e))
def wav_to_mp3(self, wav_name, mp3_name):
"""
wav格式转换为
:param wav_name:
:param mp3_name:
:return:
"""
try:
# 打开wav文件
wav_data = wave.open(wav_name)
# 获取文件参数
wav_params = wav_data.getparams()
# 将参数赋值
channels, sample_width, frame_rate, n_frames = wav_params[:4]
# 读取音频数据
bytes_data = wav_data.readframs(n_frames)
# 加载数据
sound = AudioSegment(
bytes_data,
sample_width=sample_width,
frame_rate=frame_rate,
channels=channels)
# 输出MP3格式数据
mp3_data = sound.export(mp3_name, format="mp3")
# mp3的数据
mp3_data = mp3_data.read()
return mp3_data
except Exception as e:
print("wav转换成MP3格式错误,{}".format(e))
return b""



