如何用python编写多通道wav文件

问题描述 投票:0回答:3

我正在使用 pydub 读取多通道音频,并且正在执行一些操作来更改音频的响度。现在我想把这个多通道音频写成 .wav 文件?

我不知道该怎么做。 pydub 不支持此操作。

有人可以帮我吗?

亲切的问候 丹尼斯

python audio scipy wav pydub
3个回答
4
投票

您可以从多个单声道音频片段制作多通道音频片段:

from pydub import AudioSegment

# load individual channels...
mutli_channel = AudioSegment.from_mono_audiosegments(channel1, channel2, ..., channel_n)

更多信息请参见 pydub 文档


1
投票

我建议使用soundfilewrite功能。 它需要一个形状为 (N, C) 的 numpy 矩阵,其中 N 是样本中的音频持续时间,C 是通道数。

安装

pip install soundfile

使用方法

import soundfile
import numpy as np

sampling_rate = 16000
duration_in_seconds = 1
num_channels = 2

# Create a white noise signal of two channels
audio_signal = np.random.randn(
    sampling_rate*duration_in_seconds,
    num_channels
)

soundfile.write("output.wav", audio_signal, sampling_rate)

0
投票

如果你有超过 2 个通道,你可以使用 cutcutcodec 轻松完成。 这里有一个示例

from cutcutcodec.core.generation.audio.equation import GeneratorAudioEquation
from cutcutcodec.core.filter.audio.subclip import FilterAudioSubclip
from cutcutcodec.core.io import write
stream_3_1 = GeneratorAudioEquation(
    "sin(2*pi*440*t)",  # fl
    "cos(2*pi*440*t)",  # fr
    "sin(2*pi*523*t)",  # fc
    "sin(2.pi*27.5*t)",  # lfe
    layout="3.1",
).out_streams[0]
stream_3_1 = FilterAudioSubclip([stream_3_1], 0, 10).out_streams[0]  # select the 10 first seconds
write([stream_3_1], "multi_channels.wav", [{"encodec": "pcm_s16le", "rate": 44100}])
© www.soinside.com 2019 - 2024. All rights reserved.