自监督表示学习和神经音频合成实现语音修复

关键词语音修复自监督模型语音合成语音增强神经声码器

    语音和/或音频修复的目标是增强局部受损的语音和/或音频信号。早期的工作基于信号处理技术,例如线性预测编码、正弦波建模或图模型。最近,语音/音频修复开始使用深度神经网络(DNNs),主要是全监督学习和编解码器架构,编码器输入为掩蔽的信号,解码器生成缺失部分的估计。

     我们探讨使用语音SSL模型进行语音修复的情况,即从其周围环境中重建语音信号的缺失部分,也就是完成一个与预文本任务非常相似的下游任务。为此,我们将SSL编码器(即HuBERT)与神经声码器(即HiFiGAN)结合起来,后者扮演解码器的角色。特别地,我们提出了两种解决方案来匹配HuBERT的输出与HiFiGAN的输入,通过冻结一个并微调另一个,反之亦然。

  1. 1、使用 HuBERT 和 HiFiGAN 进行语音修复的两种方法

使用 HuBERT 和 HiFiGAN 进行语音修复的两种方法:解码器适配 (IDA) 和编码器适配 (EA)。两种方法的主要区别在于谁被冻结谁被微调。

1.1 解码器适配 (IDA)

  • HuBERT 模型被冻结: 使用预训练的 HuBERT 模型进行特征提取,不进行任何微调。
  • HiFiGAN 模型被微调: 根据 HuBERT 的输出特征对 HiFiGAN 进行微调,使其能够根据 HuBERT 的特征生成语音波形。

1.2 编码器适配 (EA)

  • HuBERT 模型被微调: 对 HuBERT 模型进行微调,使其能够直接预测掩码部分的梅尔谱图。
  • HiFiGAN 模型被冻结: 使用预训练的 HiFiGAN 模型,根据 HuBERT 预测的梅尔谱图生成语音波形。

2、实验设置

2.1 实施细节

2.1.1 SSL 编码器 HuBERT

使用 Hugging Face 提供的预训练模型 hubert-large-ls960-ft,该模型基于 LibriSpeech 数据集进行微调。

语音输入采样率为 16 kHz,prenet 窗口大小和步长分别为 8960 和 320 个样本,输出维度为 768。

2.1.2 解码器适配 (IDA)

使用 Polyak 等人提出的 speech encoder-decoder 框架,并进行两步适配过程:

  • 使用 HuBERT 的输出 Z 作为新的信号表示,并使用 k-means 算法构建代码本。
  • 从头训练一个适配的 HiFiGAN 解码器,输入为代码本中向量 ˆcL 的索引。

2.1.3 编码器适配 (EA)

使用 HiFiGAN 的 Mel-spectrogram 作为输入,并冻结其模型。

重新引入 g1 和 g2 模块,并将 HuBERT 的输出适应到 Mel-spectrogram 表示。

使用 k-means 算法构建 Mel-spectrogram 的代码本,并训练 g2 模块来预测量化后的 Mel-spectrogram。

对 f2 模块进行微调,并对 g2 模块从头训练。

2.2 基线

作为基线,我们实现了一个基于线性插值的简单修复方法(ILI)。对于给定的掩蔽信号,它包括计算其Mel频谱图(如第三节所述),并用掩蔽区域前后的最后一个框架和第一个框架之间的线性插值替换掩蔽框架。然后,将插值的Mel频谱图输入到预训练的HiFiGAN声码器以生成22.05 kHz的波形,然后将其下采样到16 kHz。

2.3 评估指标

客观指标

  • PESQ (Perceptual Evaluation of Speech Quality): 评估语音质量。
  • STOI (Short-Time Objective Intelligibility): 评估语音可懂度。
  • CER (Character Error Rate): 评估语音识别准确率。

主观评估:

MUSHRA 测试: 使用 Web Audio Evaluation Tool 进行在线 MUSHRA 测试,评估语音修复质量。

2.4 结果

  • 定性分析: IEA 和 IDA 框架在修复质量上均优于 ILI 基准。
  • 单说话人情况: IEA 框架在所有指标上均优于 IDA 框架。
  • 多说话人情况: IDA 框架在所有指标上均优于 IEA 框架。
  • 盲修复: 所有指标均低于知情修复,但趋势相似。
  • 与其他研究比较: IEA 和 IDA 框架在知情修复情况下优于其他基于监督学习的方法,尤其是在长掩码情况下。

2.5 数据集

LJ Speech: 一个公共领域的语音数据集,包含13100个短音频剪辑。这些剪辑由单一发言者阅读7本非小说类书籍的段落,每个剪辑都提供了转录。剪辑的长度从1秒到10秒不等,总长度大约为24小时。

下载地址:The LJ Speech Dataset

VCTK: 一个广泛使用的语音数据集,主要用于语音识别、语音合成和语音克隆等领域。该数据集包含110名英语发音者的语音数据,每位发言者大约读出400句句子,这些句子选自报纸、彩虹段落和用于演讲口音存档的一段文字。

下载地址:https://datashare.ed.ac.uk/handle/10283/1942

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

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

相关文章

Qt | QSplitter(分离器或分隔符)、QSplitterHandle 类(分界线)

​01、一、QSplitter 类(分离器) 1、QSplitter 类继承自 QFrame 类,也就是说该类是一个带有边框的可视部件。 2、QSplitter 类实现分离器,分离器用于分离两个部件,用户可通过拖动部件之间的分界线来调整子部件的大小。 3、QSplitter 的原理(见上图):QSplitter 的实现原理…

AWS中国峰会2024 半日游

亚马逊云科技中国峰会于2024年5月29-30日在上海举办 今年就去了半天,去年也是去过的,不过今年的活动个人感觉比去年略微凌乱了一点。 今年的峰会方向和去年一致,均是AI方向的各项内容(基础架构、安全、服务、游戏、驾驶、各行各…

浅谈防勒索病毒的关键

主机加固能否做好防勒索病毒的工作,一直是网络安全领域的重要议题。随着信息技术的飞速发展,勒索病毒等网络威胁层出不穷,对企业和个人数据安全构成了严重威胁。因此,如何通过主机加固提升安全防护能力,防止勒索病毒的…

大模型管理工具Ollama搭建及整合springboot

目录 一、Ollama介绍 1.1 什么是Ollama 1.2 Ollama特点与优势 二、Ollama本地部署 2.1 版本选择 2.2 下载安装包 2.3 执行安装 2.4 Ollama常用命令 三、使用Ollama部署千问大模型 3.1 千问大模型介绍 3.2 部署过程 四、springboot接入Ollama 4.1 引入Ollama依赖 4…

音频信号分析与实践

音频信号分析与实践课程,方便理解音频信号原理和过程 1.音频信号采集与播放 两种采样模式和标准的采样流程 人说话的声音一般在2kHz一下: 采样频率的影响:采样率要大于等于信号特征频率的2倍;一般保证信号完整,需要使用10倍以上的…

python找出100~999之间的水仙花数字

水仙花数字:个位,十位,百位的立方之和等于这个数本身 例如:153 1^35^33^3 for i in range(100, 1000):bw i // 100sw i % 100 // 10gw i % 10if bw ** 3 sw ** 3 gw ** 3 i:print(i)

SpringBoot读取json文件

使用SpringBoot读取json文件作为接口&#xff0c;前端Vue可以通过跨域访问接口数据 一、创建SpringBoot 文件 创建一个 SpringBoot 文件&#xff0c;文件结构目录如下&#xff1a; 二、在pom.xml添加依赖 <!--Spring Boot 依赖--> <parent><artifactId>sp…

WireShark下载安装

下载地址 WireShark站内下载资源&#xff1a;&#xff08;土豪方便下载&#xff09; https://download.csdn.net/download/qq_58662768/89377088 官网下载&#xff1a; Wireshark Go Deep 进入主页后&#xff0c;选择Get Acquainted&#xff0c;再选择Download。 选择合适…

TPL0401B使用教程

1.前言 前面做程控放大器的时候&#xff0c;有除开AD602&#xff0c;还有一个AD620&#xff0c;性能更好&#xff0c;不过是通过外部电阻来控制放大倍数的&#xff0c;不过要是接滑动变阻器就太不优雅了&#xff0c;而且单片机怎么控制滑动变阻器&#xff1f;&#xff08;难不…

linux 内核哪种锁可以递归调用 ?

当数据被多线程并发访问(读/写)时&#xff0c;需要对数据加锁。linux 内核中常用的锁有两类&#xff1a;自旋锁和互斥体。在使用锁的时候&#xff0c;最常见的 bug 是死锁问题&#xff0c;死锁问题很多时候比较难定位&#xff0c;并且影响较大。本文先会介绍两种引起死锁的原因…

简易版本的QFD质量屋

比如餐馆要考虑什么因素最重要&#xff0c;这里列出好吃&#xff0c;快速&#xff0c;便宜三类问题&#xff0c;然后设置上图的权重&#xff0c; 然后设置9&#xff0c;3&#xff0c;1三类因子&#xff0c;9比如是最重要的&#xff0c;3&#xff0c;1&#xff0c;依次没那么重要…

开发一个comfyui的自定义节点-支持输入中文prompt

文章目录 目标功能开发环境实现过程翻译中文CLIP编码拓展仓库地址完整代码目标功能 目前comfyui的prompt提示词输入节点 CLIP Text Encode 只支持输入英文的prompt,而有时候我们需要自己制定一些prompt,所以就得将我们想要的提示词翻译为英文后再复制粘贴到该节点的输入框中…

算法练习第26天|46.全排列、47全排列II

46.全排列 46. 全排列 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/permutations/description/ 题目描述&#xff1a; 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&#xff1a;…

C++STL---vector模拟实现

通过上篇文章&#xff0c;我们知道vector的接口实际上和string是差不多的&#xff0c;但是他俩的内部结构却大不一样&#xff0c;vector内有三个成员变量&#xff1a;_start、_finish、_endofstorage: _start指向容器的头元素&#xff0c;_finish指向有效元素末尾的元素&#x…

【计算机毕业设计】359微信小程序校园失物招领系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Java基础知识点(反射、注解、JDBC、TCP/UDP/URL)

文章目录 反射反射的定义class对象反射的操作 注解注解的定义注解的应用注解的分类基准注解元注解 自定义注解自定义规则自定义demo JDBCTCP/UDP/URLTCPUDPURL 反射 反射的定义 Java Reflection是Java被视为动态语言的基础啊&#xff0c; 反射机制允许程序在执行期间接入Refl…

Vue进阶之Vue无代码可视化项目(一)

Vue无代码可视化项目 项目搭建初始步骤拓展:工程项目从0-1项目规范化package.jsoncpell.jsoncustom-words.txtts-eslint规则.eslintrc.cjsgit钩子检查有没有问题type-checkspellchecklint:stylehusky操作安装pre-commitpnpm的commit规范package.json:commitlint.config.cjs安装…

Java数组操作

数组拓展 1.1 数组拷贝 需求&#xff1a;定义一个方法arraycopy, 从指定源数组中从指定的位置开始复制指定数量的元素到目标数组的指定位置。 1.2. 排序操作 需求&#xff1a;完成对int[] arr new int[]{2,9,6,7,4,1}数组元素的升序排序操作. 1.2.1.冒泡排序 对未排序的各元素…

【计算机毕设】基于SpringBoot的教师工作量管理系统设计与实现 - 源码免费(私信领取)

免费领取源码 &#xff5c; 项目完整可运行 &#xff5c; v&#xff1a;chengn7890 诚招源码校园代理&#xff01; 1. 研究目的 随着高校规模的扩大和教学任务的增加&#xff0c;教师的工作量管理变得越来越复杂和重要。传统的教师工作量管理方式效率低下&#xff0c;容易出错&…

【typescript/flatbuffer】在websocket中使用flatbuffer

目录 说在前面场景fbs服务器代码前端typescript代码问题 说在前面 操作系统&#xff1a;Windows11node版本&#xff1a;v18.19.0typescript flatbuffer版本&#xff1a;24.3.25 场景 服务器(本文为golanggin)与前端通信时使用flatbuffer进行序列化与反序列化通信协议为websock…
最新文章