鱼C论坛

 找回密码
 立即注册
查看: 3106|回复: 14

[已解决]Python 实现MP3格式转换: 同MAC上音频转换软件 Permute 的MP3格式

[复制链接]
发表于 2023-3-6 14:43:38 | 显示全部楼层 |阅读模式
10鱼币
有几个 非标准MP3格式的 语音文件,目前需要使用 MAC上音频转换软件 Permute 来转换成标准的 MP3格式。

如果使用Python来实现此功能,如何使用 Python 实现? 谢谢!
最佳答案
2023-3-6 14:43:39
wideband 发表于 2023-3-6 16:01
谢谢您! 但是还有问题:
另外,此语句不是已经表示mp5文件夹内的 音频文件进行 一此操作吗?fs5 =

我前面有跟你说了要下载 ffmpeg,然后你要么加环境变量,要么把这两个文件放到你的python执行文件目录下

截图20230306163010.png

截图20230306163100.png

最佳答案

查看完整内容

我前面有跟你说了要下载 ffmpeg,然后你要么加环境变量,要么把这两个文件放到你的python执行文件目录下

评分

参与人数 1荣誉 +1 鱼币 +2 贡献 +3 收起 理由
白月光灿露 + 1 + 2 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-6 14:43:39 | 显示全部楼层    本楼为最佳答案   
wideband 发表于 2023-3-6 16:01
谢谢您! 但是还有问题:
另外,此语句不是已经表示mp5文件夹内的 音频文件进行 一此操作吗?fs5 =

我前面有跟你说了要下载 ffmpeg,然后你要么加环境变量,要么把这两个文件放到你的python执行文件目录下

截图20230306163010.png

截图20230306163100.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-6 14:55:00 | 显示全部楼层
本帖最后由 isdkz 于 2023-3-6 14:58 编辑

你可以使用Python中的pydub库来实现音频文件格式转换。以下是一些代码示例,它将读取非标准MP3格式的音频文件并将其转换为标准MP3格式。

首先,你需要安装pydub库。你可以使用以下命令在终端中安装它:
pip install pydub

你还要安装 ffmpeg,安装 ffmpeg 在 Mac 上有几种方法:

一、使用包管理器,如 Homebrew 或 MacPorts,来安装 ffmpeg。这些会自动更新你的 ffmpeg 安装。

二、下载一个静态构建的二进制文件。这很简单,只需解压并运行下载的文件。

三、手动安装 ffmpeg 和 ffprobe。你需要从 https://ffmpeg.org/download.html 下载 ffmpeg 和 ffprobe,并将它们移动到正确的位置。你需要授权 ffmpeg 和 ffprobe 可以在你的电脑上运行。

然后,你可以使用以下代码将非标准MP3格式的音频文件转换为标准MP3格式:
from pydub import AudioSegment

# 读取非标准MP3格式的音频文件
audio = AudioSegment.from_file("path/to/non-standard-audio-file", format="your_non_standard_audio_format")

# 将音频文件转换为标准MP3格式
audio.export("path/to/standard-mp3-file.mp3", format="mp3")

你需要将 "path/to/non-standard-audio-file" 替换为你要转换的非标准MP3格式音频文件的路径。

你还需要将 "your_non_standard_audio_format" 替换为非标准音频文件的格式(例如,如果文件扩展名为 .wav,则格式为 "wav")。

最后,你需要将 "path/to/standard-mp3-file.mp3" 替换为你要将音频文件转换为的标准MP3格式文件的路径。

点评

我很赞同!: 5.0
我很赞同!: 5
  发表于 2023-3-6 15:31
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-3-6 15:20:29 | 显示全部楼层
isdkz 发表于 2023-3-6 14:55
你可以使用Python中的pydub库来实现音频文件格式转换。以下是一些代码示例,它将读取非标准MP3格式的音频文 ...

谢谢!把E盘 mp5文件夹内,非标准MP3格式转换成标准的 MP3,存储到E:\mp55

还是有些错误:

#把E盘 mp5文件夹内,非标准MP3格式转换成标准的 MP3,存储到E:\mp55

import os
dirname = os.path.join('E:', '\mp5')
from pydub import AudioSegment

fs5 = [i for i in os.listdir(dirname)if not i.endswith('.mp3')]

[audio.export("E:\mp55", format="mp3") for i in fs5]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-6 15:35:22 | 显示全部楼层
wideband 发表于 2023-3-6 15:20
谢谢!把E盘 mp5文件夹内,非标准MP3格式转换成标准的 MP3,存储到E:\mp55

还是有些错误:

报什么错?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-3-6 15:41:08 | 显示全部楼层
WIN10系统, 我直接安装了:pip install pydub   和 pip install ffmpeg
#把E盘 mp5文件夹内,非标准MP3格式转换成标准的 MP3,存储到E:\mp55 

import os
dirname = os.path.join('E:', '\mp5')
from pydub import AudioSegment

fs5 = [i for i in os.listdir(dirname)if not i.endswith('.py')]

[audio.export("E:\mp55", format="mp3") for i in fs5]

Warning (from warnings module):
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\pydub\utils.py", line 170
    warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work
Traceback (most recent call last):
  File "E:/mp5/36 mp3 format.py", line 9, in <module>
    [audio.export("E:\mp55", format="mp3") for i in fs5]
  File "E:/mp5/36 mp3 format.py", line 9, in <listcomp>
    [audio.export("E:\mp55", format="mp3") for i in fs5]
NameError: name 'audio' is not defined
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-3-6 15:42:41 | 显示全部楼层

谢谢您的支持!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-6 15:50:31 | 显示全部楼层
本帖最后由 isdkz 于 2023-3-6 16:15 编辑
wideband 发表于 2023-3-6 15:42
谢谢您的支持!


#把E盘 mp5文件夹内,非标准MP3格式转换成标准的 MP3,存储到E:\mp55 

import os
dirname = os.path.join('E:', '\mp5')
from pydub import AudioSegment

fs5 = [i for i in os.listdir(dirname)if not i.endswith('.py')]

[AudioSegment.from_file(i, format=i.rsplit(".", 1)[1]).export("E:\mp55", format="mp3") for i in fs5]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-3-6 16:01:14 | 显示全部楼层

谢谢您! 但是还有问题:
另外,此语句不是已经表示mp5文件夹内的 音频文件进行 一此操作吗?fs5 = [i for i in os.listdir(dirname)if not i.endswith('.py')]

Warning (from warnings module):
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\pydub\utils.py", line 170
    warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work
Traceback (most recent call last):
  File "E:/mp5/36 mp3 format.py", line 11, in <module>
    [AudioSegment.from_file("i", format=i.rsplit(".", 1)[1]).export("E:\mp55", format="mp3") for i in fs5]
  File "E:/mp5/36 mp3 format.py", line 11, in <listcomp>
    [AudioSegment.from_file("i", format=i.rsplit(".", 1)[1]).export("E:\mp55", format="mp3") for i in fs5]
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\pydub\audio_segment.py", line 651, in from_file
    file, close_file = _fd_or_path_or_tempfile(file, 'rb', tempfile=False)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\pydub\utils.py", line 60, in _fd_or_path_or_tempfile
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-6 16:27:21 | 显示全部楼层
wideband 发表于 2023-3-6 16:01
谢谢您! 但是还有问题:
另外,此语句不是已经表示mp5文件夹内的 音频文件进行 一此操作吗?fs5 =

这个是找不到 ffmpeg,你没有安装 ffmpeg,不是用 pip 安装

https://ffmpeg.org/download.html 你在这个网址下载,然后把那个 bin 目录加入环境变量 path

我又改了一下你的那个代码(路径你自己改一下):
#把E盘 mp5文件夹内,非标准MP3格式转换成标准的 MP3,存储到E:\mp55 

import os
dirname = 'mp5'
from pydub import AudioSegment

fs5 = [i for i in os.listdir(dirname)if not i.endswith('.py')]
[AudioSegment.from_file(os.path.join(dirname, i), format=i.rsplit(".", 1)[1]).export(f"mp55/{i.rsplit('.', 1)[0]}.mp3", format="mp3") for i in fs5]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-6 16:28:18 | 显示全部楼层
wideband 发表于 2023-3-6 16:01
谢谢您! 但是还有问题:
另外,此语句不是已经表示mp5文件夹内的 音频文件进行 一此操作吗?fs5 =

代码我又改了一下:
#把E盘 mp5文件夹内,非标准MP3格式转换成标准的 MP3,存储到E:\mp55 

import os
dirname = 'mp5'
from pydub import AudioSegment

fs5 = [i for i in os.listdir(dirname)if not i.endswith('.py')]
[AudioSegment.from_file(os.path.join(dirname, i), format=i.rsplit(".", 1)[1]).export(f"mp55/{i.rsplit('.', 1)[0]}.mp3", format="mp3") for i in fs5]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-6 16:28:46 | 显示全部楼层
wideband 发表于 2023-3-6 16:01
谢谢您! 但是还有问题:
另外,此语句不是已经表示mp5文件夹内的 音频文件进行 一此操作吗?fs5 =

还有你要安装 ffmpeg,你那个报错就是因为你没有装,不要用 pip 装
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-3-6 20:30:34 | 显示全部楼层
ok
import os
dirname = 'E:\\mp5\\'
from pydub import AudioSegment

fs5 = [i for i in os.listdir(dirname)if not i.endswith('.py')]
[AudioSegment.from_file(os.path.join(dirname, i), format=i.rsplit(".", 1)[1]).export(f"E:/mp55/{i.rsplit('.', 1)[0]}.mp3", format="mp3") for i in fs5]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-3-8 09:13:15 | 显示全部楼层
设置python 环境变量: 系统变量

PATH = %SystemRoot%
PATH = E:\python\ffmpeg-6.0-full_build\bin
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 09:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表