如何在 Python 中创建多声道 .WAV 文件?
How to create multichannel .WAV file in Python?
.WAV format 看起来应该允许两个以上的频道 (nChannels
)。
但不幸的是scipy.io.wavfile
只写了1或2。
我真的不想手动编写自己的 Python WAV 编写器,但我找不到任何东西。
是否有任何代码可以完成这项工作?
事实证明 scipy.io.wavfile
的文档不正确。
查看源代码,我可以清楚地看到它接受任意数量的通道。
以下代码有效:
import numpy as np
from scipy.io import wavfile
fs = 48000
nsamps = fs * 10
A, Csharp, E, G = 440.0, 554.365, 660.0, 783.991
def sine(freqHz):
τ = 2 * np.pi
return np.sin(
np.linspace(0, τ * freqHz * nsamps / fs, nsamps, endpoint=False)
)
A7_chord = np.array( [ sine(A), sine(Csharp), sine(E), sine(G) ] ).T
wavfile.write("A7--4channel.wav", fs, A7_chord)
.WAV format 看起来应该允许两个以上的频道 (nChannels
)。
但不幸的是scipy.io.wavfile
只写了1或2。
我真的不想手动编写自己的 Python WAV 编写器,但我找不到任何东西。
是否有任何代码可以完成这项工作?
事实证明 scipy.io.wavfile
的文档不正确。
查看源代码,我可以清楚地看到它接受任意数量的通道。
以下代码有效:
import numpy as np
from scipy.io import wavfile
fs = 48000
nsamps = fs * 10
A, Csharp, E, G = 440.0, 554.365, 660.0, 783.991
def sine(freqHz):
τ = 2 * np.pi
return np.sin(
np.linspace(0, τ * freqHz * nsamps / fs, nsamps, endpoint=False)
)
A7_chord = np.array( [ sine(A), sine(Csharp), sine(E), sine(G) ] ).T
wavfile.write("A7--4channel.wav", fs, A7_chord)