问题标签 [pydub]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
698 浏览

python - FileNotFoundError 试图获取 mp3 文件

我正在尝试使用pydub将上传的 mp3 转换为特定比特率,使用以下代码:

我收到此错误:

FileNotFoundError: [WinError 2] Systemet finner ikke angitt fil

调用的代码process_mp3是(注意:track_obj 是一个 Django 模型对象,ID 来自数据库):

显然,mutagen 可以很好地读取文件,但 pydub 不能。是什么赋予了?

0 投票
0 回答
46 浏览

python - 在后台进程中解开 python 字典

我编写了一个类似于 shazam 应用程序的 python 脚本。它捕获 15 秒的音频,然后尝试猜测它对应于数据库中的哪首歌。我已经将我们的歌曲数据库(一个字典字典,其中每个键代表歌曲名称)存储为一个 pickle 文件,称之为 song_db.p,因为创建数据库实际上需要几个小时,大约 100 首歌曲。当我运行我的“Shazam 应用程序”时,这些是步骤:

  1. 当用户希望开始记录 15 秒样本时,他按下回车键。
  2. 完成后,我解开我的数据库。
  3. 然后我调用一个guess_song 函数来尝试猜测这首歌。

第 2 步大约需要 45 秒才能完成。不是很好!我想做的是在用户运行程序或在录制的同时开始解压我的数据库(至少会节省 15 秒,因为这是录制长度),因为两者是独立的。我如何在后台进程中运行 unpickling 函数,该进程将与录制歌曲以及我的 main 函数中的任何函数一起运行,但我不想在 unpickling 完成之前调用guess_song。

这是我编写的代码,它使我得到了大约 5-10 秒的提升,但我与录制并行运行(不是真正在后台)。我想我肯定能做得比这更好。

我在我的主要功能中将其称为:

其中 record_song() 是不言自明的,而 get_db 执行数据库的 unpickling。

0 投票
2 回答
1231 浏览

python-2.7 - Pydub 和 Aplay:抑制详细输出?

我试图抑制 aplay 的输出,但没有成功。我知道如何使用 stdout 抑制打印语句,但我不知道如何使用 pydub 模块归档相同的结果。例如,当我使用此代码播放声音时

生成的输出(红色!)是

avplay 版本 9.18-6:9.18-0ubuntu0.14.04.1,版权所有 (c) 2003-2014 Libav 开发人员于 2015 年 3 月 16 日 13:19:10 使用 gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) 输入 #0,wav ,来自“/tmp/tmp5DUj0a.wav”:
持续时间:00:00:01.32,比特率:1411 kb/s 流 #0.0:音频:pcm_s16le,44100 Hz,2 个通道,s16,1411 kb/s

当您连接更多音频时,很容易丢失关键信息。有没有办法切断这种输出?

谢谢。

0 投票
1 回答
71 浏览

python - 如何强行上课?

我做了这门课:

我面临的问题是当我创建一些AudioSegmentCustom变量时,如果我“添加”它们,add操作返回其原始父类型 =AudioSegment

因此以下代码不起作用:

因为我得到:

...即使我从一个AudioSegmentCustom对象开始,我也以AudioSegment“唯一”对象结束。“强制”新创建对象的类型的方法是什么?

以防万一您需要它:

0 投票
1 回答
4569 浏览

python - 如何使用pydub在静音结束时拆分音频文件而不删除静音?

Python初学者寻求一些帮助。

我正在使用 pydub 的静音模块来拆分和导出音频文件的块。我正在使用对这个问题的顶部回复中找到的方法:

使用 pyDub 截取长音频文件

不过现在,这些沉默不包括在块中。我希望他们留在最后。我假设我必须对 pydub.silence 函数进行修改,但我不知道需要进行哪些更改。现在是 split_on_silence:

谢谢你的帮助。

〜埃里克。

0 投票
2 回答
12297 浏览

python - Pydub - 将 split_on_silence 与最小长度/文件大小相结合

我有两个脚本,其中一个分割一定长度的音频,另一个在每次有无声段落时分割音频。是否可以在静音时分割音频,但只有在经过一定时间之后?我需要在不短于 5 分钟的静默中分割视频块。

忽略静音分割脚本:

忽略长度的拆分脚本:

0 投票
1 回答
217 浏览

python-3.x - Pydub 音频导出一开始有静音?

我编写了一个 python 脚本来获取 30 分钟 mp3 中的音频,并将其切成带有 unix 时间戳的第二长文件。源音频文件为 192kbps、441000Hz、立体声 mp3 文件。

我希望这样的服务可以存档来自广播电台(我工作的地方)的音频,并可以在给定的开始和结束时间将其传送给用户,直到第二个。我们让服务器关闭了一个小时进行维护(我们尽量不这样做,但它确实发生了),我们在这段时间内使用另一台计算机记录了它,该计算机将我们的音频保存在 30 分钟的块中。通常,此存档服务器会毫无问题地自行保存第二长的块。

执行转换的函数,给定一个 30 分钟的输入音频文件,保存输出块的目录,以及文件的开始时间作为 unix 时间戳:

我的问题是这个脚本转换的所有第二个文件似乎都超过一秒,在它们开始时平均有 70 毫秒的静默。当我从我的存档服务器下载文件时,它会给我所有连接在一起的文件,所以听起来很糟糕而且有问题。

有人可以帮我吗?我不确定这个错误来自哪里。

如果您好奇,我的完整脚本:

http://pastebin.com/fy8EkVSz

0 投票
4 回答
15554 浏览

python - 如何从 pydub AudioSegment 创建一个 numpy 数组?

我知道以下问题: How to create a pydub AudioSegment using an numpy array?

我的问题正好相反。如果我有一个 pydub AudioSegment 如何将它转换为一个 numpy 数组?

我想使用 scipy 过滤器等。我不太清楚 AudioSegment 原始数据的内部结构是什么。

0 投票
1 回答
444 浏览

android - 兼容 Android AudioEncoder 和 pydub 解码器

我正在以 mp3 格式在 android 中录制音频,为此我将MPEG_4其用作输出格式,同时AAC用作 AudioEncoder 并且它确实录制了音频。

问题是当我在 python pydub 中使用该文件进行进一步处理时,它无法解码音频 amd 给我这样的错误:

即使我安装了ffmpeg。我也尝试过不同的音频编码器,例如AMR_NB但问题仍然相同。它无法解码音频。

这是我在 pydub 中所做的事情:

有谁知道录制 mp3 音频的正确 AudioEncoder 是什么?

0 投票
1 回答
1046 浏览

python - 如何使用python减少音频数据数组中的样本数量

我正在该样本中存在的每一帧绘制一个音频样本幅度,如下所示:

在此过程中,我注意到声音 AudioSegment 的长度与声音 raw_data 不同,为什么会这样?

而且随着 test.mp3 持续时间变长,x 轴上的刻度线会达到几百万,所以我的疑问是我们如何以较低的采样率绘制数据,或者换句话说,如何减少数据数组中的样本数量?

这是我的第一个想法:计算音频数据数组中前 10 或 20 个样本的平均值,并将它们表示为一个点,这样我们就可以减少样本数量。但是,这可能会导致一些信息丢失和性能问题。

python有没有其他方法可以做到这一点?