workldf 发表于 2023-10-8 17:43:33

目前研一,想研究语音识别方向但毫无头绪?

题主本科读的是网络工程。目前在日本某国立大学读研一,跟的教授是做语音识别的。算跨了一点专业。
我选的研究方向是“音源分离”。然而现在已经过去一个学期了,对这个研究方向还是不知道怎么着手,没有头绪。
上个学期除了日常参加研究室的seminar外,教授也没有给什么其他建议。自己零零散散看了一点论文,博文,以及教材,但因为对这方面的基础知识不够,论文里不认识的概念很多,一开始每看一点就要单独去查一下新接触到的算法,名词,感觉有点模糊的印象了之后再返回去看。感觉读起来很累,并且接收到的知识也非常碎片,没法建立起系统的框架。比如根据看的资料自己尝试接触过htk,kaldi,pytorch,以及神经网络之类的,但感觉非常复杂无从下手,不知道要怎样把这些东西结合应用在自己的研究上。而且越学越觉得机器学习领域知识实在是过于庞大,无力感越来越强,担心毕不了业,每天都很焦虑。
所以想请前辈们分享一点经验、入门学习建议,或者这个研究方向的进行顺序。谢谢啦。

艾哥 发表于 2023-10-8 17:44:18

题主首先要明确自己先从声源分离入手,还是语音识别入手,还是多说话人语音识别入手。这三者在github上都有比较好的开源,且相对较新,很能跟上学术界的步伐。会议可以关注ICASSP和INTERSPEECH,期刊可以关注TheIEEE/ACM Transactions on Audio, Speech, and Language Processing,speech communication,signal processing letter。
声源分离和降噪推荐asteroid
https://github.com/asteroid-team/asteroid语音识别推荐espnet和wenet
https://github.com/espnet/espnetGitHub - wenet-e2e/wenet: Production First and Production Ready End-to-End Speech Recognition Toolkit多说话人语音识别推荐espnet
上述这三个都是基于pytorch的,花点功夫就可以相互耦合

xiaohongchen58 发表于 2023-10-8 17:44:49

MFA是一款基于Kaldi的音频文件和文字脚本在时间纬度上自动对齐的工具。优点是使用简单,无需学习kaldi即可使用,缺点是基于kaldi的声学模型,二次开发能力不够。针对中文拼音对齐能力不足,针对长文本处理能力不足。
Montreal-forced-aligner by MontrealCorpusTools音频和文字脚本对齐是在2018年之前ASR领域里很重要的一个步骤,当然随着CTC损失函数在机器学习领域的广泛应用,音频和文字准确对齐不再是一个必须的过程。
MFA使用了Kaldi的工具集,包括音频特征参数提取,模型构建,训练方法等。据我观测,MFA应该是使用了Kaldi比较早的nnet模型,模型比较小,训练起来非常快。MFA本身已经提供了一些预先训练好的声学模型包括english和mandarin模型,可以直接下载后使用。English的acoustic模型是基于librispeech训练的,用起来已经比较顺手了,比较准确。但是mandarin的声学模型好像数据量不够大,导致对齐效果差。所以就尝试使用自己的数据重新训练一个声学模型,结果还是不错的,见首图。以下为具体步骤(Kaldi和MFA的安装都略去了,大家可以自行按官方的方法进行安装):
首先准备好音频数据和对应的文字,如果文字是中文需要转化为拼音,我使用了pypinyin进行转化,每个中文汉字对应一个拼音,脚本如下,将中文字转为拼音:
# coding:utf8
import os
import sys
import numpy as np
from pypinyin import pinyin, lazy_pinyin, Style
import re


root_dir = "../train/"
pattern = re.compile(r'(.*)\.txt$')


for root, dir, files in os.walk(root_dir):
        for filename in files:
                #print(filename)
                output = pattern.match(filename)
                if output is not None:
                        print(root, filename)
                        text_file = open(root+"/"+filename)
                        line = text_file.read().strip()
                        line = line.replace(",", "")
                        pinyin =lazy_pinyin(line, style=Style.TONE3, neutral_tone_with_five=True)
                        pinyinline = ' '.join(pinyin)
                        print(line)
                        target_text_file = open(root+"/"+output.group(1)+".lab", "w")
                        target_text_file.write(pinyinline)
                        target_text_file.close()保证音频文件的名字和脚本的文件名仅仅后缀不同,例如:
T0055G0002S0001.wav 和 T0055G0002S0001.lab其中lab文件内容:yi3 hou4 ni3 shi4 nan2 hai2 zi5 原来的中文为:“以后你是男孩子”
准备好数据之后,使用MFA代的G2P模型生成词典文件:
mfa g2p mandarin_pinyin_g2p ./corpus/tiny/ dict_tiny.txt

其中tiny目录如下:
$ ls tiny
G0002G0135G0269G0326G0726G0931G1492G1634G1777G1889G1966
$ ls G0002
T0055G0002S0001.lab T0055G0002S0081.lab T0055G0002S0001.wavT0055G0002S0081.wav
$ cat T0055G0002S0001.lab
yi3 hou4 ni3 shi4 nan2 hai2 zi5

dict大概这个样子:
<eps> 0
!sil 1
<unk> 2
an1quan2 3
ba1shi2nian2dai4 4
bao1luo1wan4xiang4 5有了词典,就可以开始训练自己的模型了:
mfa train --config_path /home/yons/data/mfaligner/Montreal-Forced-Aligner/montreal_forced_aligner/config/basic_train.yaml /media/yons/SSD1T4K/kaldi/kaldi_data/corpus/tiny/ dict_tiny.txt result_tiny其中config文件中去掉了 lda和sat部分(mfa 2.0版本使用ac model时的一个bug)
这个运行完成后,默认会在路径:
/home/yons/Documents/MFA/tiny/tri_ali

$ ls tri_ali
acoustic_model.zipali.1         ali.2.scoresaligned.2   log      nbest.2      phone_ctm.2word_ctm.0
ali.0               ali.1.scoresaligned.0   final.mdl   nbest.0phone_ctm.0textgrids    word_ctm.1
ali.0.scores      ali.2         aligned.1   final.occsnbest.1phone_ctm.1tree         word_ctm.2下生成一个acoustic_model.zip 的模型文件,就是我们自己的模型了。
使用下面的命令进行对齐我们的音频:
mfa align --config_path /home/yons/data/mfaligner/Montreal-Forced-Aligner/montreal_forced_aligner/config/basic_align.yaml my_example2/ dict_tiny.txt /home/yons/Documents/MFA/tiny/tri_ali/acoustic_model.zip my_result3一般的错误时beam narrow,意思是搜索的宽度不够没有找到最匹配的点,默认的设置一般不会出现beam narrow,出现了也不用紧张,可以通过调整config文件进行调整,就可以得到textgrid文件了,通过图形化的方式验证对齐是否是正确的。
接下来使用工具Praat进行 textgrid和 wav文件的对比分析,看看是不是准确对齐了。

http://picx.zhimg.com/v2-c79b03a7e336b964ad02f37d5ac4bdfa_r.jpg?source=1940ef5c

拔刀相助 对应拼音和音素

海默子 发表于 2023-10-8 17:45:01

先学习一下数字信号处理,然后在开始看一些基础的论文
给自己的论文合集推荐一下:
https://github.com/JusperLee/Speech-Separation-Paper-Tutorial

tjzoo117 发表于 2023-10-8 17:45:14

你是哪个大学的呀。我10月份去大阪大学做博后,大家可以认识一下。我是做CV方向的,对你的方向不懂,但是学习一个方向的过程应该是相通的。我的本科是学电气工程,毕业后去变压器厂做了几年,后来做CV也是改行了。 在学一个新的领域,第一步并不是学习这个领域的高深的算法,第一步是打基础,学习这个领域的经典算法,让自己对这个领域的发展有个了结。经典算法学习完了后再来看最新的文章。找基础学习资料有个方法,你可以看看你们行业内最有名的几个会议,这些会议一般会有tutorial 的环节,这些环节里讲的东西对提升你的基础会有蛮大的帮助的。

dreamvs 发表于 2023-10-8 17:46:03

找最近的paper看看,平时多做笔记,有机会可以和作者发邮件交流一下
页: [1]
查看完整版本: 目前研一,想研究语音识别方向但毫无头绪?