当前位置: 首页 > news >正文

基于神经网络的自监督学习方法音频分离器(Matlab代码实现)

       目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码


💥1 概述

神经网络的输入是混合(男性+女性)音频的振幅谱。神经网络的输出目标是男性说话者理想的软掩模。损失函数是使输出和输入目标之间的均方误差最小化。在输出端,利用混合信号的输出幅度谱和相位将音频STFT转换回时域,并采用自监督学习方法。训练集是混合音频的前40秒中理想软掩模和二进制掩模的分离结果,网络输出是验证集为混合音频后的后20秒中男性说话者预测的理想软掩膜。

📚2 运行结果

主函数部分代码:

firstTrainingAudioFile   = "f.mp3";

secondTrainingAudioFile = "m.mp3";

C=1;%用于强化背景音乐

firstsongTrain   = C*audioread(firstTrainingAudioFile);

secondsongTrain = audioread(secondTrainingAudioFile);

L=500000;%采样值

firstsongTrain   = firstsongTrain(L:2*L);

secondsongTrain = secondsongTrain(L:2*L);%训练集

firstValidationAudioFile   ="f.mp3";

secondValidationAudioFile =  "m.mp3";

firstsongValidate   = C*audioread(firstValidationAudioFile);

secondsongValidate = audioread(secondValidationAudioFile);

 L1=1000000;

firstsongValidate   = firstsongValidate(3*L1:4*L1);

secondsongValidate = secondsongValidate(2.5*L1:3.5*L1);%验证级

% 将训练信号缩放到相同的功率。将验证信号缩放到相同的功率。

firstsongTrain  =firstsongTrain/norm(firstsongTrain);%训练集,

secondsongTrain = secondsongTrain/norm(secondsongTrain);

firstsongValidate  = firstsongValidate/norm(firstsongValidate);%验证集

secondsongValidate = secondsongValidate/norm(secondsongValidate);

mixTrain = firstsongTrain + secondsongTrain;

mixTrain = mixTrain / max(mixTrain);

mixValidate = firstsongValidate + secondsongValidate;

mixValidate = mixValidate / max(mixValidate);

WindowLength  = 128;

FFTLength     = 128;

OverlapLength = 128-1;

Fs            = 44000;

win           = hann(WindowLength,"periodic");

audiowrite('est_mix.wav',mixValidate,Fs);

P_mix0 = stft(mixTrain,'Window',win,'OverlapLength',OverlapLength,'FFTLength',FFTLength);

P_f    = abs(stft(firstsongTrain,'Window',win,'OverlapLength',OverlapLength,'FFTLength',FFTLength));

P_s    = abs(stft(secondsongTrain,'Window',win,'OverlapLength',OverlapLength,'FFTLength',FFTLength));

N      = 1 + FFTLength/2;

🎉3 参考文献

[1]鲁玉军,周世豪,胡小勇.基于BP神经网络和小波神经网络的太阳辐射强度预测[J].软件工程,2023,26(01):5-8+4.DOI:10.19644/j.cnki.issn2096-1472.2023.001.002.

👨‍💻4 Matlab代码


http://www.lryc.cn/news/34364.html

相关文章:

  • yocto 如何添加python module
  • [深入理解SSD系列综述 2.1.2] SLC、MLC、TLC、QLC、PLC NAND_固态硬盘闪存颗粒类型
  • Matlab实现FFT变换
  • JVM调优面试题——垃圾回收专题
  • java启动命令中-D和--的区别
  • QML Popup详解
  • [2.1.6]进程管理——线程的实现方式和多线程模型
  • 小白做什么兼职项目赚钱?宝妈拍短视频赚钱的方法
  • 第十四届蓝桥杯第三期模拟赛 C/C++ B组 原题与详解
  • Linux中断操作
  • 看看CabloyJS是如何异步加载并执行go wasm模块的
  • 嵌入式C语言九大数据结构操作方式详解
  • 【C++学习】栈 | 队列 | 优先级队列 | 反向迭代器
  • Python—看我分析下已经退市的 可转债 都有什么特点
  • 【第八课】空间数据基础与处理——数据结构转化
  • MATLAB绘制三Y轴坐标图:补充坐标轴及字体设置
  • springboot项目中Quartz
  • Presto本地开发,plugin的设置
  • 2023年3月西安/杭州/深圳/东莞NPDP产品经理认证考试报名
  • Vue3笔记01 创建项目,Composition API,新组件,其他
  • pandas数据分析(二)
  • Spring实现[拦截器+统一异常处理+统一数据返回]
  • MySQL——插入加锁/唯一索引插入死锁/批量插入效率
  • 【专项训练】数组、链表
  • 基于Jeecgboot前后端分离的ERP系统开发代码生成(六)
  • 什么?同步代码块失效了?-- 自定义类加载器引起的问题
  • CHAPTER 4 文件共享 - Samba
  • 深入分析@Configuration源码
  • Unity 代码优化 内存管理优化
  • 设计模式~门面(外观)模式(Facade)-08