- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须以编程方式混合音频文件(在录音中添加背景噪音),我的所有文件都是 .opus 格式的 8-9 小时长录音。
我尝试使用 pydub.AudioSegment
在内存中加载一个,但出现以下错误:
path_to_input = '/path/to/my/input/file.opus'
sound_data = AudioSegment.from_file(path_to_input)
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pydub/audio_segment.py", line 728, in from_file
fix_wav_headers(p_out)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pydub/audio_segment.py", line 142, in fix_wav_headers
raise CouldntDecodeError("Unable to process >4GB files")
pydub.exceptions.CouldntDecodeError: Unable to process >4GB files
显然我不能使用 pydub.AudioSegment
来加载我的文件,因为它们太大了(我试图打开的文件实际上在磁盘上有 48MB,所以我猜它们太大而无法加载到pydub
的内存?)。无论如何,我已经设法使用 librosa
来加载文件。
sample_rate = 8000
sound_data_librosa = librosa.load(path_to_input, sr=sample_rate, res_type='kaiser_best')
sound_data_librosa = sound_data_librosa[0]
我认为我可以通过从 sound_data_librosa
(它是一个 numpy.ndarray
)创建一个 pydub.audio_segment.AudioSegment
对象来解决这个问题).
sound_data = AudioSegment(
sound_data_librosa.tobytes(),
frame_rate=sample_rate,
sample_width=sound_data_librosa.dtype.itemsize,
channels=1
)
这似乎工作正常,但当我将它写回磁盘时,它听起来像是随机噪音。
path_to_output = '/path/to/my/output/file.opus'
sound_data.export(path_to_output,
format="opus")
所以我还没有修改任何东西,但不知何故我丢失了所有音频数据。我不明白到底是什么问题。有什么我做错了可以解决的,这样我就不会扭曲音频数据吗?
此外,我不一定非要这样做,只是我一直在使用 pydub.AudioSegment
修改我的音频文件(应用增益、叠加、写入磁盘为 . opus 文件),所以这就是为什么我需要将它们加载为 pydub.audio_segment.AudioSegment
对象。如果有另一种方法可以在 python 中做同样的事情,如果你能指出来,我将不胜感激。我主要担心的是缺少对 .opus 文件(读取和写入)的支持,这就是我尝试坚持使用 pydub
的原因。
最佳答案
是的,在 MacOS 上使用 opus
和 ffmpeg
有一些奇怪之处。我尝试修复了一段时间的文件大小问题,但没有任何进展。相反,我建议将文件转换为 wav
(或任何其他合适的 (: 格式)并尝试使用它。我试过将 42MB 的 opus 文件转换为 WAV,结果大约是 2.7GB,但不知何故 pydub
能够读取它。您可以使用类似这样的方法来转换文件
import subprocess
def convert_to_wav(name):
command = ['ffmpeg', '-i', f'{name}.opus', f'{name}.wav']
subprocess.run(command, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
或者 ping GitHub 上 pydub
的所有者
关于python-3.x - pydub.AudioSegment 在从 numpy.ndarray 加载时弄乱了音频数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65581436/
我想在 pydub 中操作 gtts 音频,但我不确定如何将 gtts 文件转换为 pydub 音频。 我知道我可以将谷歌文本转换为语音音频到 mp3,我知道我可以使用 pydub 导入 mp3,但是
我是第一次使用这个库,所以我不确定这是一个错误还是我没有正确地做某事。 我想将文件导出为 mp3,加载工作完美: wav=AudioSegment.from_wav(Path) #If I exec
如何将音频 np.array 文件加载到 PyDub 库中?目前,我使用 AudioSegment.from_wav(file_path),但如果我已经将 wav 文件加载为 numpy 数组,这并不
所以这是我的代码: from pydub import AudioSegment sound1 = AudioSegment.from_mp3("sound_0.mp3") sound2 = Audi
我正在尝试创建一个 python 脚本来帮助我管理我的汽车 radio 的音乐库。想法如下:我有一个带有 2 小时播客 mp3 文件的 USB 闪存驱动器。由于我从来没有开过这么长的路,脚本将文件分成
我是一名新手程序员,目前正在编写一些代码,其中音频片段被叠加并连接在一起。到目前为止,连接工作得很好,但似乎有关于覆盖的错误。 我实际上遵循了另一个stackoverflow问题的以下代码: from
假设我有两个相同采样率的音频段,它们是从 Pydub 中的 .wav 文件导入的,并假设我知道哪个更短。现在假设我想将较长的音频文件分成两段,以便第一段与较短的音频文件具有完全相同的长度(直到完全相同
我正在尝试使用 python 和 pydub 库将大型播客 mp3 文件分割成更小的 5 分钟 block 。这是我的代码: folder = r"C:\temp" filename = r"p967
我在 Python 3.4 中使用 Pydub 来尝试检测某些音频文件的音调。 我有一个有效的音高检测算法(McLeod Pitch Method),它对实时应用程序很稳健(我什至用它制作了一个 An
This old thread似乎表明 pydub 的 AudioSegment._data 可用于以某种方式计算声音的音调;不幸的是,这似乎是使用分配给未公开的 Mpm 类的方法来完成的。但是,如果
我在 Pydub 中使用 AudioSegment 打开了几个音频文件。 我想将音频质量从帧速率 22050 降低到 16000 Hz。 (单 channel 文件) 如果我简单地更改 AudioSe
我想从歌曲中提取专辑封面并在转换后将其嵌入回歌曲中,使用 Pydub .有人可以帮助我吗? 最佳答案 Pydub 的核心是对原始音频数据(样本)进行操作。为方便起见,它提供了解码非原始音频文件(通过
如何使用 PyDub 从波形文件的开头和结尾删除静音? 我想我应该逐段访问并检查它是否静音(但我无法做到):/ 例如我有一个在开头、结尾或两者都有静音的波形文件(如下所示),我想删除文件开头和结尾的静
pydub 中是否有诸如终止或停止功能之类的东西,以便在 play() 启动后的流可以在它仍在播放时突然停止,而不是音频播放到它的全长然后停止。 最佳答案 如前所述,pydub 本身不提供此类功能。但
我是音频编辑库的新学习者 - Pydub .我想使用 Pydub(比如 .wav/mp3 格式文件)更改一些音频文件的播放速度,但我不知道如何制作。我看到的唯一可能处理这个问题的模块是speedup
我一直在使用 pydub 将短声音文件连接成更大的声音文件。基本代码如下所示: def permuPhrase(iterations, joins): # Builds a single phrase
我想生成锻炼 mp3 文件,其中包含背景音乐和某些时间的说明(例如“用力推”、“再重复一次!”) 我用 pico2wave 生成指令并用 pydub 组装它们。 我这样做: for timing,
我想监控音频流中的静音。知道我该怎么做吗?它是流,而不是音频文件。 最佳答案 您最好的选择是从流中获取数据 block (我建议使用 50 毫秒的数据 block ,因为一个完整的 20Hz 波形是
我已经使用 pydub 输出了一个文件(将文件切成更短的文件),一切都很好,但是比特率从 256k 变成了 124k(为什么我得到这个数字而不是 128k?)。我知道 AudioSegment 有一个
我正在尝试制作一个从 wifi 探针日志生成声音的程序,以便一定数量的设备(在一定距离内)生成声音,而 rssi 就是频率。 我试图使其尽可能实时,但无法弄清楚如何使音调连续并根据值的变化更改频率。
我是一名优秀的程序员,十分优秀!