输出层得到的是干净语音的频谱
M开头的是男性说话人,F开头的是女性说话人
get_scp.py程序如下:
import os
import numpy as np
base_path="TIMIT/TEST/"
with open("test.scp","wt",encoding='utf-8') as f:
# base_path="TIMIT/TRAIN/"
# with open("train.scp","wt",encoding='utf-8') as f:
for root,dirs,files in os.walk(base_path):
for file in files:
file_name = os.path.join(root,file)
if file_name.endswith(".WAV"):
print(file_name)
f.write("%s\n"%file_name)
Psignal和Pnoise是能量,Asignal和Anoise是幅值
librosa读取数据会把语音归一化到[-1,1]之间,因此我们不用librosa,我们使用soundfile,直接读取原始数据
程序如下:
import os
import numpy as np
import random
import scipy.io.wavfile as wav
import librosa
import soundfile as sf
from numpy.linalg import norm
def signal_by_db(speech,noise,snr):
speech = speech.astype(np.int16)
noise = noise.astype(np.int16)
len_speech = speech.shape[0] # 得到语音的长度
len_noise = noise.shape[0] # 得到噪声的长度,噪声的长度要远大于语音的长度
start = random.randint(0,len_noise-len_speech) # 返回0~len_noise-len_speech之间的任意整数
end = start+len_speech
add_noise = noise[start:end] # 从噪声信号截取一段与语言信号长度一样的噪声段出来
add_noise = add_noise / norm(add_noise) * norm(speech) / (10.0 ** (0.05 * snr))
mix = speech + add_noise
return mix
if __name__=="__main__":
noise_path = "D:\\深度学习数据集\\NOISEX"
noises = ['babble', 'buccaneer1', 'destroyerengine', 'factory2', 'volvo', 'white']
clean_wavs = np.loadtxt('scp/train.scp', dtype='str').tolist()
clean_path = "D:\\TIMIT"
path_noisy = "D:\\深度学习数据集\\DNN-Mapping\\nosiy"
snrs = [-5, 0, 5, 10, 15, 20]
with open('scp/train_DNN_enh.scp', 'wt') as f:
for noise in noises:
print(noise)
noise_file = os.path.join(noise_path, noise + '.wav')
noise_data, fs = sf.read(noise_file, dtype='int16')
for clean_wav in clean_wavs:
clean_file = os.path.join(clean_path, clean_wav)
clean_data, fs = sf.read(clean_file, dtype='int16')
for snr in snrs:
noisy_file = os.path.join(path_noisy, noise, str(snr), clean_wav)
noisy_path, _ = os.path.split(noisy_file)
os.makedirs(noisy_path, exist_ok=True) # 文件路径不存在则创建路径
mix = signal_by_db(clean_data, noise_data, snr)
noisy_data = np.asarray(mix, dtype=np.int16)
sf.write(noisy_file, noisy_data, fs) # 把噪声数据写入该路径(noisy_file)下
f.write('%s %s \n' %(noisy_file, clean_file))
拼帧操作:
假设语音信号有14帧,用5帧预测一帧(中间帧),最终因此只能预测10帧【2~11】
expend=左边扩展帧=右边扩展帧=3,因此本程序用3+3+1=7帧预测一帧
tensor.unfold的dimension表示,沿着哪一个维度进行取帧的,本程序令dimension=0,表示沿着时间的维度取帧,size表示取几帧,step表示移动步长
为什么不直接把结果进行MSE,而要进行 BatchNorm1d后在MSE?
原因如下:若不进行BatchNorm1d,数值取值范围很大,用神经网络映射一个取值范围很大的数时,收敛很慢,所以为了提高收敛速度,必须加入BatchNorm1d
测试阶段:
文章浏览阅读9.6k次,点赞2次,收藏70次。详解深度学习三维重建网络:MVSNet、PatchMatchNet、JDACS-MS_三维重建网络
文章浏览阅读7.8k次,点赞9次,收藏67次。01 什么是架构和架构本质02 架构分层和分类03 架构的级别04应用架构的演进05衡量架构的合理性06 常见架构误区07 架构知识体系01 什么是架构和架构本质在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础,并用来沟通的手段,如果对架构概念理解不一样,那沟..._业务架构 应用架构
文章浏览阅读1.3k次。小米笔记本2020增强版黑苹果,经由本人萃心研究,并整合各位大佬的驱动及设置后,完美运行!相信你找到这篇文章的时候已经踩过很多坑了!毕竟我也是从小白过来的!本教程友好对待一切小白!但弱智问题请查询别的教程!本篇教程,全由个人实操总结而成,并已经成功驱动白卡蓝牙Wi-Fi,以及测试过intel板载蓝牙Wi-Fi,可完美运行,若是解锁,则可以进行睡眠,真正的睡眠!并非伪睡眠!本文章基于各位已经理解并能..._ru.efi 解锁cfg
文章浏览阅读425次,点赞4次,收藏5次。MyBatis-Plus-Join (简称 MPJ)是一个 MyBatis-Plus的增强工具,在 MyBatis-Plus 的基础上只做增强不做改变,为简化开发、提高效率而生。_spring boot +mybatis-plus-join
文章浏览阅读1.5w次,点赞12次,收藏131次。开关电源电路图及原理12v(开关电源电路图及原理详解)开关电源电路图及原理进行讲解,仅供参考!1、开关电源的电路组成开关电源的主要电路是由输入电磁干扰滤波器(EMI)、整流滤波电路、功率变换电路、PWM控制器电路、输出整流滤波电路组成。辅助电路有输入过欠压保护电路、输出过欠压保护电路、输出过流保护电路、输出短路保护电路等。开关电源的电路组成方框图如下:2、输入电路的原理及常见电路(1)AC输入整流滤波电路原理:① 防雷电路:当有雷击,产生高压经电网导入电源时,由MOV1、MOV2、MOV3:F1、F2、F_12v开关电源电路图及原理
文章浏览阅读237次。foochane :https://foochane.cn/article/2020010201.html文章目录1 缓冲流1.1 概述1.2 字节缓冲输出流成员方法构造方法使用步骤代码示例1.3 字节缓冲输入流成员方法构造方法使用步骤代码示例1.4 基本字节流和缓冲字节流效率测试基本流缓冲流缓冲流使用数据1.5 字符缓冲输出流成员方法构造方法使用步骤代码示例1.6 字符缓冲输入流成员方法构..._转换流和序列化流的
文章浏览阅读371次。ubuntu 制作安装包_构建deb软件升级包
文章浏览阅读39次。再次申明,本文是转载,为以后查找留个记号。嵌入式时代已经来临,你还在等什么? ---循序渐进学习嵌入式开发技术最近经常有用人单位给我打来电话,问我这有没有嵌入式Linux方面的开发人员,他们说他们单位急需要懂得在嵌入式linux环境下的软件开发人员,我回答说,现在每年毕业的大学生那么多,还招不到合适的软件开发人员吗?他跟我说,毕业大学生虽然多,但大部分都能力不够,不能达到他们的工作的要...
文章浏览阅读8.3k次,点赞5次,收藏19次。如何在搭载M1芯片的苹果电脑上跑UbuntuParallels官方发布了针对搭载apple silcon M1芯片的Mac的测试版虚拟机,笔者已经成功运行,具体步骤总结如下:第一步 安装测试版 Parallels Desktop需要去官网注册账户然后下载专门的测试软件参考地址:官网地址步骤如下:Meet the new Parallels Desktop (官网页面To run a virtual machine on a new Mac computer with the Apple M1 _ubuntu20.04 for m1
文章浏览阅读654次,点赞9次,收藏15次。STM32F103C8T6单片机核心板电路、ADXL345传感器电路、心率传感器电路、温度传感器和lcd1602电路组成。通过重力加速度传感器ADXL345检测人的状态,计算出走路步数、走路距离和平均速度。过心率传感器实时检测心率,通过温度传感器检测温度。通过LCD1602实时显示步数、距离和平均速度、心率以及温度值。主要学习ADXL345,心率传感器等等。
文章浏览阅读190次。Pandas 修改index。_pandas修改df index
文章浏览阅读2.7k次。主子表关联在我们的开发业务中是及其常见的,本文我们就来看下如何在分库分表的情况下,使用来完成主子关联。官方文档指分片规则一致的主表和子表。例如:t_order 表和 t_order_item 表,均按照 order_id 分片,则此两张表互为绑定表关系。绑定表之间的多表关联查询不会出现笛卡尔积关联,关联查询效率将大大提升。其中 t_order 在 FROM 的最左侧,ShardingSphere 将会以它作为整个绑定表的主表。_shardingjdbc 对2张表分表,那么联表查询