Python 如何在.wav文件末尾添加静默秒数?

Python 如何在.wav文件末尾添加静默秒数?,python,audio-processing,Python,Audio Processing,我有1440个音频文件要输入神经网络。问题是它们的长度不尽相同。我使用的答案发布在: 但它似乎不起作用。我想在我的文件末尾加上几秒钟的沉默,然后把它们全部修剪成5秒长。有人能帮我吗 (我也尝试过使用pysox,但这给了我一个这个安装的SoX无法处理.wav文件。错误。) 我正在使用谷歌Colab来做这个。代码是: import wave, os, glob from pydub import AudioSegment from pydub.playback import play path

我有1440个音频文件要输入神经网络。问题是它们的长度不尽相同。我使用的答案发布在:

但它似乎不起作用。我想在我的文件末尾加上几秒钟的沉默,然后把它们全部修剪成5秒长。有人能帮我吗

(我也尝试过使用pysox,但这给了我一个
这个安装的SoX无法处理.wav文件。
错误。)

我正在使用谷歌Colab来做这个。代码是:

import wave, os, glob
from pydub import AudioSegment
from pydub.playback import play

path = 'drive/MyDrive/Ravdess/Sad' #This is the folder from my Google Drive which has the audio files
count = 0
for filename in glob.glob(os.path.join(path, '*.wav')):
    w = wave.open(filename, 'r')
    d = w.readframes(w.getnframes())
    frames = w.getnframes()
    rate = w.getframerate()
    duration = frames/float(rate)
    count+=1
    print(filename, "count =", count, "duration = ", duration)
    audio_in_file = filename
    audio_out_file = "out.wav"

    new_duration = duration
    #Only append silence until time = 5 seconds.

    one_sec = AudioSegment.silent(duration=2000) #duration in milliseconds
    song = AudioSegment.from_wav(audio_in_file)
    final_song = one_sec + song
    new_frames = w.getnframes()
    new_rate = w.getframerate()
    new_duration = new_frames/float(rate)
    final_song.export(audio_out_file, format="wav")
    print(final_song, "count =", count, "new duration = ", new_duration)

    w.close()
这将提供以下输出:

drive/MyDrive/Ravdess/Sad/03-01-04-01-02-01-01.wav count = 1 duration =  3.5035

<pydub.audio_segment.AudioSegment object at 0x7fd5b7ca06a0> count = 1 new duration =  3.5035

drive/MyDrive/Ravdess/Sad/03-01-04-01-02-02-01.wav count = 2 duration =  3.370041666666667

<pydub.audio_segment.AudioSegment object at 0x7fd5b7cbc860> count = 2 new duration =  3.370041666666667

... (and so on for all the files)
drive/MyDrive/ravdss/Sad/03-01-04-01-02-01-01.wav计数=1持续时间=3.5035
计数=1新持续时间=3.5035
drive/MyDrive/ravdss/Sad/03-01-04-01-02-02-01.wav计数=2持续时间=3.3700416667
计数=2新持续时间=3.3700416667
... (对于所有文件,依此类推)

既然您已经在使用
pydub
,我会这样做:

from pydub import AudioSegment
from pydub.playback import play

input_wav_file   = "/path/to/input.wav"
output_wav_file  = "/path/to/output.wav"
target_wav_time  = 5 * 1000 # 5 seconds (or 5000 milliseconds)

original_segment = AudioSegment.from_wav(input_wav_file)
silence_duration = target_wav_time - len(original_segment)
silenced_segment = AudioSegment.silent(duration=silence_duration)
combined_segment = original_segment + silenced_segment

combined_segment.export(output_wav_file, format="wav")

非常感谢您的支持,它很有效!我真的很感激,上帝保佑(很高兴我能帮上忙),请考虑通过点击✅ 按钮