【问题标题】:How can I append a wav file using scipy.io.wavfile?如何使用 scipy.io.wavfile 附加 wav 文件?
【发布时间】:2020-02-14 06:40:49
【问题描述】:

我正在创建一个简单的程序来生成多个正弦波的 wav 文件。照原样,wav 文件将被覆盖而不是附加,但我无法在 scipy.io.wavfile 文档中找到附加。我确实找到了另一个用户在 SO 上问这个问题,但给出的答案是这是默认行为,但它对我来说不起作用。任何帮助将不胜感激!

import numpy as np
from scipy.io import wavfile


duration = 10  # in seconds, may be float
f = 200  # sine frequency, Hz, may be float
fs=48000
samples = (np.sin(2 * np.pi * np.arange(fs * duration) * f / fs)).astype(np.float32)

wavfile.write('Sine.wav', 48000, samples)


duration = 10  # in seconds, may be float
f = 100  # sine frequency, Hz, may be float
fs=48000
samples = (np.sin(2 * np.pi * np.arange(fs * duration) * f / fs)).astype(np.float32)

wavfile.write('Sine.wav', 48000, samples)

此代码生成一个 10 秒 100hz 正弦 .wav 文件,我想要一个 20 秒 wav 文件,其中 10 秒 200hz 然后 10 秒 100hz

【问题讨论】:

    标签: python numpy scipy


    【解决方案1】:

    您可以将 2 个样本阵列附加在一起,我使用 400Hz 作为第二个样本,因为在我的计算机扬声器上听不到 100Hz。

    import numpy as np
    from scipy.io import wavfile
    
    
    duration = 10  # in seconds, may be float
    f = 200  # sine frequency, Hz, may be float
    fs=48000
    samples1 = (np.sin(2 * np.pi * np.arange(fs * duration) * f / fs)).astype(np.float32)
    
    #wavfile.write('Sine.wav', 48000, samples)
    
    
    duration = 10  # in seconds, may be float
    f = 400  # sine frequency, Hz, may be float
    fs=48000
    samples2 = (np.sin(2 * np.pi * np.arange(fs * duration) * f / fs)).astype(np.float32)
    samples=np.append(samples1,samples2)
    wavfile.write('Sine.wav', 48000, samples)
    

    【讨论】:

    • 这很好用,直到文件太大并且我的内存用完了,这就是我想要追加到文件的原因。你在这方面有什么建议吗?否则这个技巧对我很有帮助,谢谢你的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多