gpt4 book ai didi

python - 在音频文件中制作与python重叠的 block

转载 作者:行者123 更新时间:2023-12-03 00:28:05 24 4
gpt4 key购买 nike

我想从我的音频文件中制作 block 以便在 block 之间重叠。例如,如果每个 block 的长度为 4 秒,第一个 block 从 0 到 4 开始,重叠的步长是 1 秒,那么第二个 block 应该从 3 到 7 开始。根据这个 How to splice an audio file (wav format) into 1 sec splices in python? ,我用 pydub用于执行此操作的模块和 make_chunks(your_audio_file_object, chunk_length_ms)方法,但它在 block 之间没有重叠,只是将音频文件切成固定长度的 block 。有人对此有想法吗?谢谢

最佳答案

这是一种方法:

import numpy as np
from scipy.io import wavfile

frequency, signal = wavfile.read(path)

slice_length = 4 # in seconds
overlap = 1 # in seconds
slices = np.arange(0, len(signal)/frequency, slice_length-overlap, dtype=np.int)

for start, end in zip(slices[:-1], slices[1:]):
start_audio = start * frequency
end_audio = (end + overlap)* frequency
audio_slice = signal[int(start_audio): int(end_audio)]
本质上,我们执行以下操作:
  • 加载文件及其对应的频率。为了举例,我假设它的单 channel ,多 channel 它可以工作,只是更多的代码。
  • 定义所需的切片长度和重叠。该数组将为我们提供每个音频片段的开始。通过进一步压缩它并添加重叠,我们得到了所需的 block 。

  • 要说服自己切片有效,请查看以下代码段:
    slice_length = 4 # in seconds
    overlap = 1 # in seconds
    slices = np.arange(0, 26, slice_length-overlap, dtype=np.int) # 26 is arbitrary

    frequency = 1
    for start, end in zip(slices[:-1], slices[1:]):
    start_audio = start * frequency
    end_audio = (end + overlap) * frequency
    print(start_audio, end_audio)
    输出:
    0 4
    3 7
    6 10
    9 13
    12 16
    15 19
    18 22
    21 25

    关于python - 在音频文件中制作与python重叠的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54341880/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com