单通道说话人语音分离——Conv-TasNet(Convolutional Time-domain audio separation Network)

news/2024/4/24 9:19:45/文章来源:https://blog.csdn.net/pk296256948/article/details/129170187

单通道说话人语音分离——Conv-TasNet模型(Convolutional Time-domain audio separation Network)

参考文献:《Conv-TasNet: Surpassing Ideal Time-FrequencyMagnitude Masking for Speech Separation》

1.背景

        在真实的声学环境中,鲁棒的语音处理通常需要自动的语音分离。由于这一研究课题对语音处理技术的重要性,人们已经提出了许多方法来解决这一问题。然而,语音分离的准确性,特别是对新演讲者,仍然不够。

        大多数以前的语音分离方法都是在混合信号的时频(T-F,或谱图)表示中制定的,这是使用短时傅里叶变换(STFT)从波形中估计的。T-F域的语音分离方法的目的是从混合谱图中近似出单个源的干净谱图。

        虽然时频掩蔽仍然是最常用的语音分离方法,但该方法存在几个缺点:

首先,STFT是一种通用的信号转换,它不一定是最优的语音分离。

其次,干净源相位的精确重构是一个重要的问题,对相位的错误估计引入了重构音频精度的上界。这个问题是明显的,即使是理想的混合物,理想的干净幅度谱图。虽然相位重建的方法可以用来缓解这一问题,但该方法的性能仍然不理想。

第三,成功地从时频表示中分离出来,需要对混合信号进行高分辨率的频率分解,这需要一个较长的时间窗口来计算STFT。

        为了解决这些缺点,这里提出了一个全卷积时域音频分离网络(Conv-TasNet),一个用于端到端时域语音分离的深度学习框架。Conv-TasNet使用线性编码器生成语音波形的表示。

2.Conv-TasNet模型介绍

 如图所示,

(A): TasNet系统的方框图。编码器将混合波形的一部分映射到高维表示法,并且分离模块计算每个目标源的乘法函数(即,掩模)。解码器从掩码特征重建源波形。

(B): 所建议的系统的流程图。一个一维卷积自动编码器对波形进行建模,而一个时间卷积网络(TCN)分离模块基于编码器的输出来估计掩模。TCN中一维卷积块的不同颜色表示不同的膨胀因子。

(C): 一维卷积块的设计。每个块由一个1×1-conv操作组成,然后是一个深度卷积(D−conv)操作,在每两个卷积操作之间添加非线性激活函数和归一化。两个线性的1×1−conv块分别作为剩余路径和跳过连接路径。

这里不对模型进行细讲,具体可以看原文

编码器和解码器基函数的可视化,编码器表示,和源掩码的样本2-扬声器混合物。扬声器用红色和蓝色表示。编码器表示法根据每个扬声器在每个基函数和时间点上的功率进行着色。基函数根据其欧几里得相似性进行排序,并在频率和相位调谐上显示出多样性。

训练目标

训练端到端系统的目标是最大化尺度不变的源噪比(SI-SNR),这通常被用作源分离的评估度量,取代标准的源失真比(SDR)

 其中,\hat{s}是分离的语音,s为目标的语音。

3.实验结果

实验数据:华尔街日报的说话人数据集(要花钱买的,有钱请随意)

两个说话人

 三个说话人

 

4.展望

说话人分离目前是热门方向,特别是在会议系统里面有很多的应用场景。

但目前关键在于,模型训练太久了,长串联式结构,一个batch只能用1或者2,如何减少训练代价也是一个值得研究的问题。

另外,因为该模型使用的是时域信息,不适用于高采样率音频也是问题,说话人分离的音频都是8kHz采样,16kHz也很勉强训练,同样也是训练代价问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_73071.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity(二)--通过简单例子了解UGUI几个常用对象操作(Text,Image,Button)

目录 文本框等UI对象的添加Canvas 画布给Canvas添加脚本,绑定要操作的对象文本框Text的使用图像Image的使用更换图片Type:显示图片相关按钮Button的使用过渡导航事件绑定文本框等UI对象的添加 Canvas 画布 当创建一个UI元素的时候,如果没有Canvas 画布,就会自动创建一个画布…

PDMS二次开发(一)——PML类型程序类型与概念

目录前言一、PML类型与概念基础知识变量函数小例子注释PML表达式条件判断语句循环skip和break窗口程序在PDMS菜单栏中添加程序窗口自动定位PML常见控件前言 PDMS二次开发需要.net 有自带的PML语言和C# .net一般通常泛指的是C#语言 模型数据借助.NET的接口可以转换成数据库中的…

MSP430F2132IRHBR功能框图TPS259824LNRGER电路保护和电源管理解决方案芯片

概述:MSP430F21x2 16位超低功耗微控制器 (MCU) 是MSP430系列微控制器的一部分。这些MCU采用一种架构,加上5种低功耗模式,能在便携式测量应用中延长电池的使用寿命。这些器件具有一个强大的16位 RISC CPU、16位寄存器和用于获得最大编码效率的…

OpenStack手动分布式部署Glance【Queens版】

目录 Glance简介 1、登录数据库配置(在controller执行) 1.1登录数据库 1.2数据库里创建glance 1.3授权对glance数据库的正确访问 1.4退出数据库 1.5创建glance用户密码为000000 1.6增加admin角色 1.7创建glance服务 1.8创建镜像服务API端点 2、安装gla…

FinClip 的 2022 与 2023

相比往年,今年复盘去年与展望新年的文章来的稍慢一点。不过也希望能够借这篇文章,和关注 FinClip 的用户朋友们一起聊聊,我们在去年和今年的想法与计划。 2022 在过去的一年中,我们的身边发生了很多事情,这些事情在不…

CANoe-TestModule-vTESTstudio-Python -- 爱恨情仇

前面有聊过什么才是真正的自动化平台;其实说起来也是每个测试人的工作之路,从入门的测试执行、测试用例设计、自动化脚本开发、自动化架构开发、自动化平台开发,实际上我们大多数测试人都在纠结第一步的测试执行和第三步的自动化脚本开发&…

数据结构—堆(完全解析)

数据结构—堆(完全解析) 数据结构——堆(Heap)大根堆、小根堆 详解数据结构——堆 堆的基本存储 【从堆的定义到优先队列、堆排序】 10分钟看懂必考的数据结构——堆 【堆/排序】堆排序的两种建堆方法 【算法】排序算法之堆排序 C…

Mybatis学习记录

Mybatis学习记录一、MyBatis简介1.1、MyBatis历史1.2、MyBatis特性1.3、MyBatis下载1.4、和其他持久化层技术对比二、MyBatis框架搭建2.1、加入依赖2.2、创建MyBatis的核心配置文件2.3、创建Mapper接口2.4、 创建MyBatis的映射文件2.5、 测试环境2.6、 加入Log4j日志功能三、核…

Array.apply(null,{length: 99}) 逻辑解析

一、基础概述 vue 教程中有一段 demo code,如下: render: function (createElement) {return createElement(div,Array.apply(null, { length: 20 }).map(function () {return createElement(p, hi)})) }这个表达式Array.apply(null, { length: 20 })有…

Leetcode第450题删除二叉搜索树中的结点|C语言

题目: 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤…

【python】用plotly绘制正二十面体

文章目录顶点棱实现正二十面体plotly 的 Python 软件包是一个开源的代码库,它基于 plot.js,而后者基于 d3.js。我们实际使用的则是一个对 plotly 进行封装的库,名叫 cufflinks,能让你更方便地使用 plotly 和 Pandas 数据表协同工作…

最新文件快递柜系统网站源码-Fastapi+Sqlite3+Vue2+ElementUI-简洁好用

## 主要特色 - [x] 轻量简洁:Fastapi+Sqlite3+Vue2+ElementUI - [x] 轻松上传:复制粘贴,拖拽选择 - [x] 多种类型:文本,文件 - [x] 防止爆破:错误次数限制 - [x] 防止滥用:IP限制上传次数 - [x] 口令分享:随机口令,存取文件,自定义次数以及有效期 - [x] 匿名分享:无…

BurpSuite实战教程02-BurpSuite+夜神模拟器抓包教程

工具介绍 BurpSuite BurpSuite是用于“攻击”web 应用程序的集成平台(java编写),包含了许多工具。Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP 消息、…

使用Autoware标定工具包联合标定相机和激光雷达

前面文章介绍了,安装autoware标定工具包、ros驱动usb相机、robosense-16线激光雷达的使用,本文记录使用Autoware标定工具包联合标定相机和激光雷达的过程。1.ros驱动相机,启动相机;启动激光雷达2.联合录制bag包rosbag record -a 参…

k8s1.23.0+ubuntu20.04+docker23+hyperv

问题 k8s node节点加入到集群时卡住 “[preflight] Running pre-flight checks” # master节点重新生成加入命令 kubeadm token create --ttl 0 --print-join-command参考 注意 k8s1.24使用containerd而不再使用docker,因此使用k8s1.23版本 环境 k8s: 1.23.0 u…

TestNG和Junit的区别,测试框架该如何选择?

要想知道两个框架的区别,首先分别介绍一下两个框架。 TestNG是一个java中的开源自动化测试框架,其灵感来自JUnit和NUnit,TestNG还涵盖了JUnit4整个核心的功能,但引入了一些新的功能,使其功能更强大,使用更…

记一次docker虚拟机横向移动渗透测试

本次渗透在几个docker虚拟机间多次横向移动,最终找到了一个可以进行docker逃逸的出口,拿下服务器。渗透过程曲折但充满了乐趣,入口是172.17.0.6的docker虚拟机,然后一路横向移动,最终在172.17.0.2出实现了docker逃逸&a…

【vue2每日小知识】实现store中modules模块的封装与自动导入

🥳博 主:初映CY的前说(前端领域) 🌞个人信条:想要变成得到,中间还有做到! 🤘本文核心:省去我们store仓库中分模块时的需要每次导入index的问题 目录 【前言】在store中如何简…

ELK日志分析--Filebeat

ELK架构 Filebeat简介 Filebeat安装 Filebeat简单使用 专用日志搜集模块 案例模块-Nginx 模块 重读日志文件 使用Processors(处理器)过滤和增强数据 1.ELK架构 2.Filebeat简介 可以使用 Filebeat 收集各种日志,之后发送到指定的目标系统上,但是同…

软件测试面试题 —— 整理与解析(1)

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:🌎【Austin_zhai】🌏 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能&#xf…