如何将多个 mp3 文件合并为静音?

How to merge multiple mp3 files with silence on between?

当我尝试使用 pydubglob 合并文件夹中的多个 .mp3 文件以遍历文件时,出现以下错误。

from pydub import AudioSegment
from os import getcwd
import glob

cwd = (getcwd()).replace(chr(92), '/')
export_path = f'{cwd}/result.mp3'

MP3_FILES = glob.glob(pathname=f'{cwd}/*.mp3', recursive=True)
silence = AudioSegment.silent(duration=15000)
count, lenght = 0, len(MP3_FILES)

for n, mp3_file in enumerate(MP3_FILES):
    mp3_file = mp3_file.replace(chr(92), '/')
    count += 1
    if count == 1:
        print(n, mp3_file)
        audio1 = AudioSegment.from_mp3(mp3_file)
    elif count == 2:
        audio2 = AudioSegment.from_mp3(mp3_file)
    elif count == 3:
        res = audio1 + silence + audio2
        print('Merging')
        count = 0
    if n+1 == lenght:
        res.export(export_path, format='mp3')
        print('\ndone!')

预期输出: 一个音频文件,原始音频之间有静音。

AUDIO_RESULT: audio1 silence audio2 silence audio3...

回溯:

[mp3 @ 0000021b440ec740] Failed to read frame size: Could not seek to 1026.
C:\Users\Acer\Documents file.mp3: Invalid argument

它说 - Invalid argument 这可能是由文件路径中使用的 space 引起的。

如果您使用命令行传递 file/folder 路径,路径字符串应在 引号("")

内传递
"C:\Users\Acer\Documents\Upwork\Shashank Rai\mp3 segmented delay speech.mp3"

然而,在 Windows OS 中,有时 C:\ 会产生问题,因为一个单独的 \ 用于特殊字符。你能用双 \ 测试吗?

"C:\Users\Acer\..."

编辑 1: 你能测试一下吗 -

from pathlib import Path 

cwd = Path.cwd()
MP3_FILES = list(cwd.rglob('*.mp3'))
...
...