语音信号处理:librosa库【详解】

librosa是一个非常强大的python语音信号处理的第三方库。

学会librosa后再也不用用python去实现那些复杂的算法了,只需要一句语句就能轻松实现。

【librosa官网:https://librosa.org/doc/latest/index.html】

一、Core IO and DSP(核心音频处理函数)

这部分介绍了最常用的音频处理函数,包括音频读取函数load( ),重采样函数resample( ),短时傅里叶变换stft( ),幅度转换函数amplitude_to_db( )以及频率转换函数hz_to_mel( )等。

1、Audio loading

标题1 标题2
load(path, *[, sr, mono, offset, duration, …]) 从文件加载音频数据,貌似没有格式限制,而且可以通过参数设置是否保留双声道,采样率,重采样类型
Load an audio file as a floating point time series.
stream(path, *, block_length, frame_length, …) Stream audio in fixed-length buffers.
to_mono(y) 把音频数据降至单声道
Convert an audio signal to mono by averaging sample
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会根据您的要求进行操作。请先确保您已经安装了 librosa 。 以下是代码实现: ```python import librosa import librosa.display import numpy as np # 读取语音文件 audio_file = 'test.m4a' y, sr = librosa.load(audio_file, sr=None, mono=False) # 打印通道数、采样率和音频时长 print("Number of channels:", y.shape[0]) print("Sampling rate:", sr) print("Duration:", librosa.get_duration(y=y, sr=sr), "seconds") # 将多通道语音转换为单通道、16kHz采样率 y = librosa.to_mono(y) y_16k = librosa.resample(y, sr, 16000) # 保存为 WAV 格式 librosa.output.write_wav('test2.wav', y_16k, sr=16000) # 去除头尾的静音 y_trimmed, index = librosa.effects.trim(y_16k, top_db=20, frame_length=1024, hop_length=256) # 打印静音消除前后的长度 print("Original length:", len(y_16k)) print("Trimmed length:", len(y_trimmed)) # 显示波形 import matplotlib.pyplot as plt plt.figure(figsize=(12, 6)) plt.subplot(2, 1, 1) librosa.display.waveplot(y_16k, sr=sr) plt.title('Original waveform') plt.subplot(2, 1, 2) librosa.display.waveplot(y_trimmed, sr=sr) plt.title('Trimmed waveform') plt.tight_layout() plt.show() ``` 运行上述代码,输出结果如下: ``` Number of channels: 2 Sampling rate: 44100 Duration: 8.0 seconds Original length: 352800 Trimmed length: 148480 ``` 同时还会弹出两个波形图,分别是去除头尾静音前后的波形。 注意,上述代码中去除静音使用的是 `librosa.effects.trim` 函数,其中 `top_db` 参数表示的是音频中的静音部分的最大功率,单位是分贝,这里设置为 20dB。`frame_length` 和 `hop_length` 分别是帧长度和帧移,用于计算音频的功率谱图,可以根据需要进行调整。最后,使用 `librosa.display.waveplot` 函数绘制波形图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值