实用工具 | 语音文本对齐MFA的安装及使用

news2024/11/18 0:13:12

 Montreal Forced Aligner(MFA)[1]是一个用于将音频和文本进行对齐的工具。它可以用于语音识别、语音合成和发音研究等领域。MFA支持多种语言和语音,用户可以根据需要自定义训练模型。

本博客介绍如何使用MFA对音频和文本进行对齐,其中使用的是MFA的最新版本(版本v2.2.12)。

目录

MFA的安装

安装方法一:

安装方法二:

生成词典文件

对齐

PS


MFA的安装

MFA 支持 Windows、macOS 和 Linux 操作系统。

本博客是基于 Linux 操作系统(Ubuntu20.04)其他可参考MFA安装。

安装方法一:

conda create -n aligner -c conda-forge montreal-forced-aligner
conda activate aligner
conda update --all
conda install -c conda-forge montreal-forced-aligner



pip install g2pk

安装方法二:

 git clone https://github.com/pyrasis/MFARunner

conda create -n mfa -c conda-forge montreal-forced-aligner
source activate
conda activate mfa

conda install montreal-forced-aligner==2.0.6
cd MFARunner
pip install -r requirements.txt
sudo apt-get install g++ openjdk-8-jdk python3-dev python3-pip curl
pip install konlpy==0.6.0 ffmpeg==1.4
bash <(curl -s https://raw.githubusercontent.com/konlpy/konlpy/master/scripts/mecab.sh)

生成词典文件

1.下载预训练模型

包含:字典,G2P()模型,声学模型,

下载g2p模型

#英文

mfa model download g2p english_uk_mfa

#中文

mfa model download g2p mandarin_pinyin_g2p
# 也可到官网上直接下载

 #韩文

mfa model download g2p korean_jamo_mfa

 

2.1.示例数据集中文

mfa g2p mandarin_pinyin_g2p 数据集路径/dataset 保存路径/mandarin_dict.txt

.wav文件为数据集中的语音文件,.lab文件为语音文件对应的文本,其中文本的语言应与你使用的声学模型所能识别的文本以及词典文件中的语言相一致。如:声学模型所识别的文本为汉字,而你的语言文件说的内容为“我爱你”,则你的.lab文件中应存储着“我爱你”的文本,若是声学模型识别的文本为拼音,则.lab文件中应为“wo3 ai4 ni3“,同时词典文件中也应有着汉字-音素或者拼音-音素的对应信息。

2.2.示例韩文数据集Korean Single Speaker Speech Dataset | Kaggle

 新建kss-align.py,生成.lab文件

import os, tqdm, re
from tqdm import tqdm
from jamo import h2j
from glob import glob

text = '/workspace/dataset/kss/transcript.v.1.4.txt'
base_dir = '/workspace/dataset/kss'

filters = '([.,!?])'

with open(text, 'r', encoding='utf-8') as f:
    for line in f.readlines():
        temp = line.split('|')
        file_dir, script = temp[0], temp[3]
        script = re.sub(re.compile(filters), '', script)
        file_dir = file_dir.split('/')
        fn = file_dir[0] + '/' + file_dir[1][:-3] + 'lab'
        file_dir = os.path.join(base_dir, fn)
        with open(file_dir, 'w', encoding='utf-8') as f:
            f.write(script)

file_list = sorted(glob(os.path.join(base_dir, '**/*.lab')))
jamo_dict = {}
for file_name in tqdm(file_list):
    sentence =  open(file_name, 'r', encoding='utf-8').readline()
    jamo = h2j(sentence).split(' ')
    
    for i, s in enumerate(jamo):
        if s not in jamo_dict:
            jamo_dict[s] = ' '.join(jamo[i])        

dict_name = 'korean_dict.txt'
with open(dict_name, 'w', encoding='utf-8') as f:
    for key in jamo_dict.keys():
        content = '{}\t{}\n'.format(key, jamo_dict[key])
        f.write(content)
#pip install jamo

#生成.lab文件
python kss-align.py

 

lexicon 文件生成

mfa train_g2p korean_dict.txt korean.zip
mfa g2p korean.zip kss korean.txt
mfa train kss korean.txt out

命令解释

输入到每个指令的参数可以根据用户进行更改。

  • mfa train_g2p 是 korean_dict 路径, 运行后生成的 zip 文件路径
  • mfag2p 来自 train_g2p 的 zip 文件路径、 带有数据的文件夹路径、 运行后生成的 txt 文件路径
  • mfatrain接收有数据的文件夹路径、g2p中出现的txt文件路径、运行后保存TextGrid文件的路径

全部运行后,TextGrid文件将被保存到out文件夹中
 

对齐

mfa align /path:/dataset path:/dictionary path:/acoustic_modle path:/output


执行mfa后,可能会出现名为unaligned.txt的文件。

PS

[PS1]the global mfa database server does not exist, initializing it first . 

全局mfa数据库服务器不存在,请先对其进行初始化。

montreal_forced_aligner.exceptions.DatabaseError: DatabaseError:

There was an error encountered starting the global MFA database server, please see /root/Documents/MFA/pg_init_log_global.txt for more details and/or look at the logged errors above.

 参考网址【未解决】

mfa configure --enable_auto_server
mfa server init

参考材料

【1】PYRASIS.COM: 내 목소리를 TTS로 만들기(FastSpeech2)

【2】Installation — Montreal Forced Aligner 2.0.0 documentation 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络实验:交换机划分Vlan配置

目录 前言实验目的实验内容实验过程总结 前言 计算机网络是当代信息技术的重要组成部分&#xff0c;也是现代社会的基础设施之一。为了提高计算机网络的性能和安全性&#xff0c;网络管理员需要对网络进行合理的规划和设计&#xff0c;包括对网络拓扑、地址分配、路由协议、交…

TP-LINK XDR6078 WiFi6路由器 简单开箱评测

TL-XDR6078易展版AX6000双频WiFi6路由器 简单开箱测评&#xff0c;新房快装修好了&#xff0c;先装上WiFi&#xff0c;挑了一会选中这个了&#xff0c;双2.5G电口&#xff0c;6000Mbps无线速率&#xff0c;还支持端口汇聚等等功能&#xff0c;感觉还不错。 TP-LINK XDR3040 Wi…

R语言 tidyverse系列学习笔记(系列2)表格的处理

创建一个得分表 score install.packages("dplyr") library(dplyr)install.packages("tibble") library(tibble)install.packages("stringr") library(stringr)score tibble(IDc("1222-1","2001-0","3321-1",&qu…

从JMeter Cookie管理器开始,轻松掌握接口测试技能!

目录 【前言】 【1. 添加Cookie管理器】 【2. 登录接口获取Cookie】 【3. Cookie关联】 【4. 动态修改Cookie值】 【结论】 【附录】 【前言】 在接口测试中&#xff0c;我们经常需要对Cookie进行处理和关联&#xff0c;来模拟用户在浏览器中的操作。特别是在登录和权限…

chatgpt赋能python:Python名字的由来

Python名字的由来 Python是一门高级编程语言&#xff0c;它的名字来源于一个非常有趣的故事。接下来的文章将介绍如何命名Python&#xff0c;并且揭示这个名字的真正含义。 Guido van Rossum设计Python Python是由Guido van Rossum设计的。在1989年&#xff0c;Guido在荷兰国…

用Flask-Login库和阿里云短信推送服务实现网站注册登录功能

诸神缄默不语-个人CSDN博文目录 本文介绍如何用Flask-Login库和阿里云短信推送服务实现网站注册登录功能。 大致逻辑是在注册和找回密码时调用阿里云短信服务&#xff0c;登录时使用手机号密码登录&#xff08;别的安全功能还没有加&#xff09;。 很多代码都是直接由ChatGP…

Zinx框架学习 - 连接管理

Zinx - V0.9 连接管理 每个服务器的能够处理的最大IO数量是有限的&#xff0c;根据当前服务器能开辟的IO数量决定&#xff0c;最终决定权是内存大小现在我们要为Zinx框架增加链接个数的限定&#xff0c;如果超过⼀定量的客户端个数&#xff0c;Zinx为了保证后端的及时响应&…

浏览器断点调试技巧

一、前言 日常开发中&#xff0c;当业务测试数据展示有问题时&#xff0c;我们需要快速去排查问题出现原因&#xff1b;但看了自己写的逻辑&#xff0c;很自信的觉得没问题但最终展示和逻辑对不上。这个需要我们便可以利用浏览器断点调试功能&#xff0c;来逐步调试对比逻辑来…

IDEA 终端命令行设置

一、说明 在使用 IDEA 进行程序开发时&#xff0c;需要使用到终端 Terminal 的功能&#xff0c;便于能够快速使用 shell 命令&#xff0c;进行各种相关的操作。 这些操作可以包括代码的版本控制、程序的打包部署等等 比如&#xff0c;前后端的集成开发环境&#xff08;IDEA、We…

探究Cache缓存功能---【pytest】

前言 pytest运行完用例之后会生成一个 .pytest_cache的缓存文件夹&#xff0c;用于记录用例的ids和上一次失败的用例。 1、跑自动化时经常会出现这样一个情况&#xff0c;一轮自动化跑完后零星出现了几个失败测试用例&#xff0c;无法断定失败的原因&#xff0c;所以可能需要重…

2023新版Spring6全新讲解-核心内容之事务管理

Spring核心之事务 一、JdbcTemplate JdbcTemplate是Spring框架对JDBC操作进行的封装&#xff0c;可以简化方便对数据库的操作。 1.数据库表结构 准备一张普通的表 CREATE TABLE t_student (id int NOT NULL AUTO_INCREMENT,name varchar(32) DEFAULT NULL,age int DEFAULT N…

网络安全面试题大全(整理版)+附答案

随着国家政策的扶持&#xff0c;网络安全行业也越来越为大众所熟知&#xff0c;想要进入到网络安全行业的人也越来越多。 为了拿到心仪的 Offer 之外&#xff0c;除了学好网络安全知识以外&#xff0c;还要应对好企业的面试。 作为一个安全老鸟&#xff0c;工作这么多年&…

Vue.js 中的过渡动画是什么?如何使用过渡动画?

Vue.js 中的过渡动画是什么&#xff1f;如何使用过渡动画&#xff1f; 在 Vue.js 中&#xff0c;过渡动画是一种在元素插入、更新或删除时自动应用的动画效果&#xff0c;可以为应用程序增加一些动态和生动的效果。本文将介绍 Vue.js 中过渡动画的概念、优势以及如何使用过渡动…

谈“污”色变!如何应对测序中常见污染

微生物群落研究正在彻底改变人类对微生物学的理解&#xff0c;但是微生物污染的DNA存在于各种操作中包含从取样到测序结束。其中常用的DNA提取试剂盒和其他实验室试剂中也存在污染&#xff0c;其严重影响从微生物量较低的样品中获得的结果。 DNA污染的可能来源包括分子生物学级…

【嵌入式环境下linux内核及驱动学习笔记-(14)linux总线、设备、驱动模型之platform】

目录 1、新驱动架构的导入1.1 传统驱动方式的痛点1.2 总线设备驱动架构 2、platform 设备驱动2.1 platform总线式驱动的架构思想2.2 platform _device相关的数据类型2.2.1 struct platform_device2.2.2 struct platform_device_id2.2.3 struct resource2.2.4 struct device 2.3…

VSCode离线安装插件

一、前言 工作环境屏蔽外网&#xff0c;无法在VSCode客户端在线VSCode插件商店下载插件。因此&#xff0c;只能下载插件文件&#xff0c;并离线安装。 二、下载VSCode插件 1. 在VSCode插件商店中搜索需要的插件 2. 下载vsix格式插件 三、离线安装 VSCode 插件 1. 打开菜单Vi…

docker-compose部署hive数仓服务 —— 筑梦之路

1. docker创建网络 # 创建&#xff0c;注意不能使用hadoop-network docker network create hadoop_network# 查看 docker network ls 2. mysql部署 # 拉取镜像docker pull mysql:5.7# 生成配置mkdir -p conf/ data/db/cat > conf/my.cnf <<EOF [mysqld] character…

今天面了个字节跳动拿30k出来的测试大佬,让我见识到了什么是天花板

2022年堪称大学生就业最难的一年&#xff0c;应届毕业生人数是1076万。失业率超50%&#xff01; 但是我观察到一个数据&#xff0c;那就是已经就业的毕业生中&#xff0c;计算机通信等行业最受毕业生欢迎&#xff01; 计算机IT行业薪资高&#xff0c;平均薪资是文科其他岗位的…

Apache 日志解析和分析工具

ApacheWeb服务器在企业中广泛用于托管其网站和Web应用程序。Apache 服务器生成的原始日志提供了有关 Apache 服务器托管的网站如何处理用户请求以及访问您的网站时经常遇到的错误的宝贵信息。 什么是 Apache 日志 Apache 日志包含 Apache Web 服务器处理的所有事件的记录 - 从…

【Linux】LNMP框架的架构与环境配置

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 LNMP框架的架构与环境配置 一、安装 Nginx 服务1.关闭防火墙及安装依赖包2、创建运行用户3、编译安装4、优化路径5、添加 Nginx 系统服务 二、安装 MySQL 服务1、安装Mysql环…