当前位置: 首页 > 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代码


相关文章:

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

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 神经网络的输入是混合(男性女性)音频的振幅谱。神经网络的输出目标是男性说话者理想的软掩模。损失函数…...

yocto 如何添加python module

yocto 如何添加python module 最近在使用阿里云的图像识别SDK,在ubuntu主机上使用pip install alibabacloud_imagerecog20190930 安装modules以后就可以运行demo程序了,于是打算将SDK移植到嵌入式板子上面,然后在板子上跑一下demo。但是发现…...

[深入理解SSD系列综述 2.1.2] SLC、MLC、TLC、QLC、PLC NAND_固态硬盘闪存颗粒类型

闪存最小物理单位是 Cell, 一个Cell 是一个晶体管。 闪存是通过晶体管储存电子来表示信息的。在晶体管上加入了浮动栅贮存电子。数据是0或1取决于在硅底板上形成的浮动栅中是否有电子。有电子为0,无电子为1. SSD 根据闪存颗粒区分,固态硬盘有SLC、MLC、TLC、QLC、PLC 五种类型…...

Matlab实现FFT变换

Matlab实现FFT变换 文章目录Matlab实现FFT变换原理实现手算验证简单fft变换和频谱求取功率谱结论在信号处理中,快速傅里叶变换(FFT)是一种非常常见的频域分析方法。本文将介绍如何使用Matlab实现FFT变换,并通过Matlab代码演示实际…...

JVM调优面试题——垃圾回收专题

文章目录1、如何确定一个对象是垃圾?1.1、引用计数法1.2、可达性分析2、对象被判定为不可达对象之后就“死”了吗?3、都有哪些垃圾收集算法?3.1、 标记-清除(Mark-Sweep)3.2、标记-复制(Mark-Copying)3.3、标记-整理(Mark-Compact)3.4、分代收…...

java启动命令中-D和--的区别

目录一、java -D 添加参数二、java -- 添加参数在 SpringBoot 项目中,启动时,通过 -D 或 -- 添加参数,都可以直接覆盖 yml 或 properties 配置文件中的同名配置,如果不存在则相当于添加了一个配置。 一、java -D 添加参数 java -D…...

QML Popup详解

1.简介 弹出式用户界面控件,它可以与Window或ApplicationWindow一起使用,默认不可见。 常用属性介绍,一些公用的基础属性就不作介绍,可以查看我前面写的文章。 closePolicy : enumeration :此属性决定弹出窗口关闭的…...

[2.1.6]进程管理——线程的实现方式和多线程模型

文章目录第二章 进程管理线程的实现方式和多线程模型一、线程的实现方式(一)用户级线程(二)内核级线程二、多线程模型(一)一对一模型(二)多对一模型(三)多对多…...

小白做什么兼职项目赚钱?宝妈拍短视频赚钱的方法

很多宝妈在家带孩子之余想做兼职赚点小钱,依靠互联网无疑是比较方便的途径,在刷单、微商等网上兼职成为过去式以后,很多宝妈选择了短视频创业。 宝妈怎么拍短视频? 宝妈因为要照顾宝宝还要兼顾家务,空闲的时间比较琐碎…...

第十四届蓝桥杯第三期模拟赛 C/C++ B组 原题与详解

文章目录 一、填空题 1、1 找最小全字母十六进制数 1、1、1 题目描述 1、1、2 题解关键思路与解答 1、2 给列命名 1、2、1 题目描述 1、2、2 题解关键思路与解答 1、3 日期相等 1、3、1 题目描述 1、3、2 题解关键思路与解答 1、4 乘积方案数 1、4、1 题目描述 1、4、2 题解关…...

Linux中断操作

一、thread_irq在内核中, 除了可以通过request_irq() 、 devm_request_irq()申请中断以外, 还可以通过以下二个函数申请( 它们比request_irq和devm_request_irq多了一个参数thread_fn)。 用这两个API申请中断的时候, 内核会为相应的中断号分配…...

看看CabloyJS是如何异步加载并执行go wasm模块的

介绍 CabloyJS提供了一个内置模块a-wasmgo,将go wasm模块的异步加载运行机制进行了封装,使我们可以非常方便的在CabloyJS项目中引入go wasm,从而支持更多的业务场景开发 下面,我们以测试模块test-party为例,演示引入…...

嵌入式C语言九大数据结构操作方式详解

在C语言的开发过程中,灵活使用数据结构,对提高编程效率有极大的帮助。 目录 1 数组 2 链表 3 跳表 4 栈 5 队列 6 树 7 堆 8 散列表 9 图 10 总结 数据结构想必大家都不会陌生,对于一个成熟的程序员而言,熟悉和掌握数据…...

【C++学习】栈 | 队列 | 优先级队列 | 反向迭代器

🐱作者:一只大喵咪1201 🐱专栏:《C学习》 🔥格言:你只管努力,剩下的交给时间! 栈 | 队列 | 优先级队列 | 反向迭代器😼容器适配器🙈什么是适配器&#x1f64…...

Python—看我分析下已经退市的 可转债 都有什么特点

分析 需求分析 可转债退市原因的种类与占比是多少 强赎与非强赎导致的退市可转债 存续时间 维度占比 强赎与非强赎导致的退市可转债 发行资金 规模占比 强赎与非强赎导致的退市可转债 各个评级 的占比 强赎与非强赎导致的退市可转债 各个行业(一级行业&#xf…...

【第八课】空间数据基础与处理——数据结构转化

一、前言 数据结构即指数据组织的形式,是适合于计算机存储、管理和处理的数据逻辑结构。对空间数据则是地理实体的空间排列方式和相互关系的抽象描述。它是对数据的一种理解和解释,不说明数据结构的数据是毫无用处的,不仅用户无法理解,计算机程序也不能正确地处理,对同样一组数…...

MATLAB绘制三Y轴坐标图:补充坐标轴及字体设置

三轴坐标图 1 函数 MATLAB绘制三轴图函数可见MATLAB帮助-multiplotyyy 基础图形绘制是很简单,但坐标轴及字体设置该如何实现呢? 本文以以下几个例子为例,希望可以解决在利用MATLAB绘制三轴坐标图时常见的疑惑。 2 案例 2.1 案例1&#xf…...

springboot项目中Quartz

下面内容大家可在自己创建的 springboot项目中 玩1 定时清理垃圾图片定时任务组件Quartz,可以根据我们设定的周期,定时执行目标任务计划1.1 Quartz介绍(了解)Quartz是Job scheduling(作业调度)领域的一个开源项目&…...

Presto本地开发,plugin的设置

1. 新的问题 之前搭建Presto的本地开发环境时,一直使用config.properties中的plugin.bundles配置项定义需要加载的plugin模块,详细可以参考博客《win10基于IDEA,搭建Presto开发环境》presto服务启动时,指定加载哪些组件&#xff…...

2023年3月西安/杭州/深圳/东莞NPDP产品经理认证考试报名

产品经理国际资格认证NPDP是国际公认的唯一的新产品开发专业认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会(PDMA)成立于1979年…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

AI,如何重构理解、匹配与决策?

AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...

LLMs 系列实操科普(1)

写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景

Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...