首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >librosa write_wav in mono?

librosa write_wav in mono?
EN

Stack Overflow用户
提问于 2017-06-04 05:46:03
回答 1查看 4.6K关注 0票数 0

我想对以44100赫兹到40.000赫兹录制的单声道录音重新采样。

下面的代码可以工作,但librosa似乎保存在立体声,使文件大小的两倍,这是不需要的,我有很多样本要处理。

所以我需要以单声道格式保存结果。

代码:

代码语言:javascript
复制
# resampling a .wav file to a specific sample rate
import os

import librosa
import resampy

# this is the sample reate we want
sr_target = 44100


directory_in_str = '/home/hugo/test/'

directory = os.fsencode(directory_in_str)

for file in os.listdir(directory):
    filename = os.fsdecode(file)
    if filename.endswith(".wav"):
        file_path = os.path.join(directory_in_str, filename)
        print(file_path)
        # Load in librosa's example audio file at its native sampling rate
        x, sr_orig = librosa.load(file_path, mono=True, sr=None)

        print("Original sample rate is : ", sr_orig)
        # x is now a 1-d numpy array, with `sr_orig` audio samples per second

        # We can resample this to any sampling rate we like, say 16000 Hz
        y = resampy.resample(x, sr_orig, sr_target)

        file_path_new = os.path.join(directory_in_str+'new/', filename)


        # write it back
        librosa.output.write_wav(file_path_new, y, sr_target)

        continue
    else:
        continue

问:我想保存重采样的文件在单声道,我得到立体声和没有选项保存只单声道…

EN

回答 1

Stack Overflow用户

发布于 2017-07-21 21:36:34

输出是单声道还是立体声取决于y。如果y的形状为(n,),则输出为单声道;如果y的形状为(2,n),则输出为立体声。librosa.output.write_wav不会自动将单声道信号转换为立体声。

从您的代码中,您的输出音频看起来像是立体声音频。文件大小翻倍并不意味着它是立体声的。这可能是由于输入和输出音频的数据类型不同造成的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44348831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档