东莞网站建设方案外包,企业网站改版价格,淮北发布,网站前端设计要做什么一、音量增强
音量增强#xff0c;顾名思义就是音量的调大和调小#xff0c;通过对音量进行增强可以使得模型更好的泛化。防止数据只有小音量时#xff0c;当有大音量传入时模型不能很好的进行识别。
下面是我对音量增强生成频谱图进行可视化的结果
上面的一个图片是音量…一、音量增强
音量增强顾名思义就是音量的调大和调小通过对音量进行增强可以使得模型更好的泛化。防止数据只有小音量时当有大音量传入时模型不能很好的进行识别。
下面是我对音量增强生成频谱图进行可视化的结果
上面的一个图片是音量增强前的频谱图下面是音量增加50dB分贝的结果。由图可知音量的增加使得频谱图更亮。
#对音量增强进行可视化
import os
from pydub import AudioSegment
import numpy as np
import librosa
import librosa.display
import matplotlib.pyplot as plt# 音频路径
audio_path
output_path # 创建输出目录
os.makedirs(output_path, exist_okTrue)def volume_boost(audio, gain_db):音量增强return audio gain_dbdef plot_combined_spectrogram(original_samples, boosted_samples, sample_rate, title, output_file):绘制原始和增强后的频谱图在同一张图片中# 转换为浮点型并归一化original_samples original_samples.astype(np.float32) / np.max(np.abs(original_samples))boosted_samples boosted_samples.astype(np.float32) / np.max(np.abs(boosted_samples))# 使用 librosa 计算频谱S_original librosa.feature.melspectrogram(yoriginal_samples, srsample_rate, hop_length256)S_original_db librosa.power_to_db(S_original, refnp.max)S_boosted librosa.feature.melspectrogram(yboosted_samples, srsample_rate, hop_length256)S_boosted_db librosa.power_to_db(S_boosted, refnp.max)# 绘制频谱图fig, axs plt.subplots(2, 1, figsize(12, 8), constrained_layoutTrue)# 原始频谱图librosa.display.specshow(S_original_db, srsample_rate, hop_length256, x_axistime, y_axishz, cmapmagma, axaxs[0])axs[0].set_title(f原始音频频谱: {title})axs[0].set_ylabel(频率 (Hz))axs[0].set_xlabel(时间 (s))# 增强后频谱图librosa.display.specshow(S_boosted_db, srsample_rate, hop_length256, x_axistime, y_axishz, cmapmagma, axaxs[1])axs[1].set_title(f音量增强后频谱: {title})axs[1].set_ylabel(频率 (Hz))axs[1].set_xlabel(时间 (s))# 保存图片plt.savefig(output_file)plt.close()# 遍历目录中的音频文件
for file_name in os.listdir(audio_path):if file_name.endswith(.wav):file_path os.path.join(audio_path, file_name)audio AudioSegment.from_file(file_path)# 获取原始音频的时域数据original_samples np.array(audio.get_array_of_samples())sample_rate audio.frame_rate# 音量增强audio_volume_boosted volume_boost(audio, gain_db50)volume_boosted_samples np.array(audio_volume_boosted.get_array_of_samples())# 保存原始和增强后频谱图到同一张图片combined_spectrum_file os.path.join(output_path, f{file_name}_combined_spectrum.png)plot_combined_spectrogram(original_samples, volume_boosted_samples, sample_rate, file_name, combined_spectrum_file)print(f保存频谱图到: {combined_spectrum_file})二、EQ增强
EQ增强首先应该了解什么是EQ EQ全称Equalizer中文称为均衡器也常简称为“均衡”或“均衡调节”。它是一种音频处理工具通过对不同频率段的音量进行独立增强或削弱以达到改善或修饰声音色彩、平衡音色的作用。
通俗的讲想象声音是一张由低音、中音、高音组成的图片。EQ就像调节图片每个色调的明暗可以让低音更浑厚、高音更明亮、中音更突出或者把某些不需要的频段衰减掉让声音更清晰。
下面图是EQ增强前的频谱图和对低频5000hz进行了20dB的增益的频谱图发现在高频的亮度有明显的提升。
下面图是EQ增强前的频谱图和对低频1000hz进行了-20dB的增益的频谱图发现亮度有明显的下降。 #对EQ增强进行可视化
import os
from pydub import AudioSegment
import numpy as np
import librosa
import librosa.display
import matplotlib.pyplot as plt
import scipy.signalaudio_path
output_path os.makedirs(output_path, exist_okTrue)def db_to_linear(gain_db):dB增益转线性倍数return 10 ** (gain_db / 20)def apply_eq(samples, sample_rate, eq_settings):简易EQ增强对多个频段峰值调节:param samples: 一维int16/float音频数据:param sample_rate: 采样率:param eq_settings: [{freq: center_freq, gain_db: gain, q: Q}, ...]:return: 增强后样本int16y samples.astype(float)for eq in eq_settings:f0 eq[freq]gain_db eq[gain_db]Q eq.get(q, 1.0)# 设计二阶峰值滤波器b, a scipy.signal.iirpeak(w0f0/(sample_rate/2), QQ)filtered scipy.signal.lfilter(b, a, y)linear_gain db_to_linear(gain_db)y (linear_gain - 1) * filtered# 防止溢出并转换回int16y np.clip(y, -32768, 32767)return y.astype(np.int16)def plot_combined_spectrogram(original_samples, boosted_samples, sample_rate, title, output_file):绘制原始和增强后的频谱图在同一张图片中# 转换为浮点型并归一化original_samples original_samples.astype(np.float32) / np.max(np.abs(original_samples))boosted_samples boosted_samples.astype(np.float32) / np.max(np.abs(boosted_samples))# 使用 librosa 计算频谱S_original librosa.feature.melspectrogram(yoriginal_samples, srsample_rate, hop_length256)S_original_db librosa.power_to_db(S_original, refnp.max)S_boosted librosa.feature.melspectrogram(yboosted_samples, srsample_rate, hop_length256)S_boosted_db librosa.power_to_db(S_boosted, refnp.max)# 绘制频谱图fig, axs plt.subplots(2, 1, figsize(12, 8), constrained_layoutTrue)# 原始频谱图librosa.display.specshow(S_original_db, srsample_rate, hop_length256, x_axistime, y_axishz, cmapmagma, axaxs[0])axs[0].set_title(f原始音频频谱: {title})axs[0].set_ylabel(频率 (Hz))axs[0].set_xlabel(时间 (s))# 增强后频谱图librosa.display.specshow(S_boosted_db, srsample_rate, hop_length256, x_axistime, y_axishz, cmapmagma, axaxs[1])axs[1].set_title(fEQ增强后频谱: {title})axs[1].set_ylabel(频率 (Hz))axs[1].set_xlabel(时间 (s))# 保存图片plt.savefig(output_file)plt.close()eq_settings [{freq: 1000, gain_db: -20, q: 1.0},
]for file_name in os.listdir(audio_path):if file_name.endswith(.wav):file_path os.path.join(audio_path, file_name)audio AudioSegment.from_file(file_path)original_samples np.array(audio.get_array_of_samples())sample_rate audio.frame_rateeq_samples apply_eq(original_samples, sample_rate, eq_settings)combined_spectrum_file os.path.join(output_path, f{file_name}_eq_combined_spectrum.png)plot_combined_spectrogram(original_samples, eq_samples, sample_rate, file_name, combined_spectrum_file)print(f保存频谱图到: {combined_spectrum_file})EQ增强和普通音量增强的区别 音量增强是所有频率都等比例放大比如整体变大声。 EQ增强只针对某些频率增强或削弱如只让高频变大声、低频变安静整体音量未必变化很大而是“音色、清晰度”变化。
三、RIR增强
RIR增强首先应该了解什么是RIR 举个例子 比如你录一段“你好”在干净录音棚是很干净的没有任何回声。 你把这段语音和一个会议室的RIR做卷积这段录音就像是在会议室里说的带有真实的混响、空间感。 如果用浴室的RIR那就像你在浴室说话回声很大。 ————————————————————————————后续会更新