如何在 Python 中将 WAV 从立体声转换为单声道?

发布于 2024-10-19 09:26:49 字数 69 浏览 4 评论 0原文

我不想使用任何其他应用程序(例如 sox) - 我想用纯 Python 来完成此操作。安装所需的 Python 库就可以了。

I don't want to use any other apps (like sox) - I want to do this in pure Python. Installing needed Python libs is fine.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一口甜 2024-10-26 09:26:49

我维护一个开源库 pydub,它使这个变得非常简单

from pydub import AudioSegment
sound = AudioSegment.from_wav("/path/to/file.wav")
sound = sound.set_channels(1)
sound.export("/output/path.wav", format="wav")

一个警告:它使用 ffmpeg 来处理音频格式转换,但如果您只使用 wav它可以是纯Python。

I maintain an open source library, pydub, which make this pretty simple

from pydub import AudioSegment
sound = AudioSegment.from_wav("/path/to/file.wav")
sound = sound.set_channels(1)
sound.export("/output/path.wav", format="wav")

One caveat: it uses ffmpeg to handle audio format conversions, but if you only use wav it can be pure python.

迟月 2024-10-26 09:26:49

如果 WAV 文件是 PCM 编码的,那么您可以使用 wave。打开源文件和目标文件,读取样本,对通道进行平均,然后将其写出。

If the WAV file is PCM-encoded then you can use wave. Open the source and destination files, read samples, average the channels, and write them out.

莫相离 2024-10-26 09:26:49

我能想到的最简单的方法是使用 PyTorch mean 函数作为在下面的例子中。

import torch
import torchaudio

def stereo_to_mono_convertor(signal):
    # If there is more than 1 channel in your audio
    if signal.shape[0] > 1:
        # Do a mean of all channels and keep it in one channel
        signal = torch.mean(signal, dim=0, keepdim=True)
    return signal

# Load audio as tensor
waveform, sr = torchaudio.load('audio.wav')
# Convert it to mono channel
waveform = stereo_to_mono_convertor(waveform)

The simplest way I can think of is using the PyTorch mean function as in the example below.

import torch
import torchaudio

def stereo_to_mono_convertor(signal):
    # If there is more than 1 channel in your audio
    if signal.shape[0] > 1:
        # Do a mean of all channels and keep it in one channel
        signal = torch.mean(signal, dim=0, keepdim=True)
    return signal

# Load audio as tensor
waveform, sr = torchaudio.load('audio.wav')
# Convert it to mono channel
waveform = stereo_to_mono_convertor(waveform)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文