语音
文章平均质量分 92
语音识别
zhulinniao
这个作者很懒,什么都没留下…
展开
-
VS2019远程开发配置
尝试一下win10远程linux开发,从而配置kaldi去调试。1 安装环境1.1 win10启用vs2019 linux1.2 centos安装相关库# centos sudo yum -y install gdb gdb-gdbserver zip openssh-server gcc gcc-g++# ubuntusudo apt-get install gdb gdbserver zip openssh-server g++2 新建项目2.1 创建C++ linux控制台项原创 2020-10-24 23:54:49 · 1121 阅读 · 0 评论 -
VS2019远程调试webrtcvad
文章目录1 准备代码2 新建vs工程到webrtcvad3 配置vs工程3.1 配置linux远程3.2 附加包含目录3.3 库依赖项3.4 调试页面4 遇到的问题4.1 error : unknown type name ‘int16_t’4.2 整个代码需要一个main函数之前在这VS2019单独编译WEBRTC VAD模块尝试通过用window上的vs2019调试过WEBRTC的VAD模块,但是其实还是很不方便,还需要将代码转到linux上进行使用。vs2019可以直接对linux代码进行编译和调原创 2020-10-24 23:48:38 · 438 阅读 · 0 评论 -
中文TensorflowTTS在win10上理解一下
1 安装【环境要求】Python3.7 TensorFlow==2.3.0requirements = { "install": [ "tensorflow-gpu>=2.3.0", "tensorflow-addons>=0.10.0", "setuptools>=38.5.1", "librosa>=0.7.0", "soundfile>=0.10.2", "matp原创 2020-10-14 22:16:35 · 1808 阅读 · 1 评论 -
nnet3-chain-copy-egs用于chain模型输入数据
1 nnet3-chain-copy-egs划分数据集会将cegs.1.ark按照大小平均的划分为cegs.1.1.ark cegs.1.2.ark cegs.1.3.arknnet3-chain-copy-egs ark:cegs.1.ark ark:cegs.1.1.ark ark:cegs.1.2.ark ark:cegs.1.3.ark# 通过这种方式将数据集以txt形式拆分打开来看nnet3-chain-copy-egs ark:cegs.1.ark \ark,t:res/cegs.1原创 2020-10-13 20:06:42 · 553 阅读 · 0 评论 -
Kaldi的Python3库附加
为了更为方便观察Kaldi整个训练过程,需要将Kaldi写的Python3库附加到Python3的系统库中,方便定为和调试。1 wsj/s5/steps/libs目录该目录下的python文件均是kaldi训练chain和nnet3训练模型的主程序,通过这些python程序,带上合适参数,去调用shell的命令行(说是python,其实里面还是调用shell命令行去训练的)重点分析一下common.py里面的最常用的几个函数:【execute_command】前台运行一个shell命令行,若返回不原创 2020-10-09 11:18:53 · 1515 阅读 · 2 评论 -
SOX的一些命令和kaldi使用sox音频数据增强
如果喜欢FFMPEG命令,请看FFMPEG的一些命令批量操作音频文件参考5.1 批量输出绝对路径下的所有音频并更名1 SOX win10和linux安装yum install soxapt install soxsox win10下载地址和sox win10介绍配置环境变量C:\JAVA\sox-14.4.2-win32C:\JAVA\sox-14.4.2-win32;C:\ProgramFiles\cmake-3.7.0-win64-x64\bin;C:\JAVA\ffmpeg-20原创 2020-09-29 17:55:35 · 4539 阅读 · 2 评论 -
FFMPEG的一些命令
1 ffmpeg linux和win10 yum install ffmpeg ffmpeg-devel -y apt install ffmpegwin10的ffmpeg官网地址下载ffmpeg-20200504-5767a2e-win64-static.zip,然后直接解压即可,可以配置PATH环境变量值C:\JAVA\ffmpeg-20200504-5767a2e-win64-static\bin到PATH下,最好下载full版本ffmpeg -version2 ffmpeg命令2.1原创 2020-09-29 11:46:25 · 765 阅读 · 0 评论 -
Kaldi模型信息分析
1 调试方便准备在当前egs/s5目录下新建一个文件命名为path2.sh,内容比path.sh少最后一行export LC_ALL=C,用于避免数据乱码export KALDI_ROOT=`pwd`/../../..[ -f $KALDI_ROOT/tools/env.sh ] && . $KALDI_ROOT/tools/env.shexport PATH=$PWD/utils/:$KALDI_ROOT/tools/openfst/bin:$PWD:$PATH[ ! -f $K原创 2020-09-25 18:05:56 · 2186 阅读 · 0 评论 -
lattice-arc-post计算边上累计得分
1 模型预测产生lat.1.gz这里请参考理解lattice,这里有介绍解码过程中如何产生lattice内容文件,以及lattice内容分析。2 边上累计得分gunzip -c 20200921.lat.bin.gz |\lattice-arc-post --acoustic-scale=1.0 --print-alignment=true \exp/chain/tdnn_1a_sp/final.mdl ark:- -|\utils/int2sym.pl -f 5 data/lang_chain原创 2020-09-25 15:14:05 · 777 阅读 · 0 评论 -
lattice输出到<phone-id,后验概率>对齐到每帧
lattice输出到<transition-id,后验概率>对齐到每帧这介绍的是从lattice中输出到transition-id上的后验概率,对齐到每帧如果从lattice输出对齐到phone上的后验概率,要特别注意,从lattice中输出对齐到phone上的后验概率本身就是依赖于语言模型得到的,可看上面那篇文章有说原因1 模型预测产生lat.1.gz这里请参考理解lattice,这里有介绍解码过程中如何产生lattice内容文件,以及lattice内容分析。2 lattice输出<phon原创 2020-09-25 11:38:08 · 453 阅读 · 1 评论 -
lattice输出到<transition-id,后验概率>对齐到每帧
get_phone_post计算phone上概率并产生tacc和transform.mat这里介绍的是从声学模型计算到phone上的对齐每帧的后验概率计算chain声学模型帧对齐上的<pdf-id,后验概率>(不算语言模型)这里介绍的是从声学模型计算到pdf-id上的对齐到每帧的后验概率(做了部分max概率筛选,如125帧数x2[pdf-id 概率])nnet3-compute计算chain前向传播概率矩阵(声学模型输出)这里介绍的是从声学模型计算到pdf-id上的对齐每帧的后验概率矩阵(这里输出的是矩原创 2020-09-25 11:28:59 · 545 阅读 · 0 评论 -
声学模型计算到phone上后验概率和强制对其结果匹配
计算到phone上的后验概率logprob-to-post ark:exp/chain/nnet3_ali/xent.nnet3.1.ark ark:-|\post-to-phone-post --binary=false exp/chain/tdnn_1a_sp/final.mdl ark:- ark,t:-|head -n 5post-to-phone-post.cc or get_phone_post.sget_phone_post.shReferencesHow to get th原创 2020-09-24 22:08:26 · 1263 阅读 · 1 评论 -
get_phone_post计算phone上概率并产生tacc和transform.mat
在1 通过get_phone_post.sh来计算phone上的后验概率. ./path.sh. ./cmd.sh# exp/chain/tri6_7d_tree_sp为chain模型训练时所有训练数据的对齐结果ali.*.gz# data/test_hires 为需要计算每一帧上phone概率的steps/nnet3/chain/get_phone_post.sh exp/chain/tri6_7d_tree_sp \exp/chain/tdnn_1a_sp data/lang data/t原创 2020-09-24 23:02:53 · 616 阅读 · 0 评论 -
计算chain声学模型帧对齐上的<pdf-id,后验概率>(不算语言模型)
通过这个nnet3-compute计算chain前向传播概率(声学模型输出)【2.3 output-xent输出】我们知道:通过nnet3-compute输出声学模型的输出值,他有两层节点,一个是output,一个是output-xent其实在训练目标函数(用交叉熵)时,用的是output-xent,但是output-xent的值非常大。因此要归一化,从而得到。在nnet3-compute计算chain前向传播概率(声学模型输出)【理解nnet3-compute的输出值】有讲到声学模型后验概率值的作用原创 2020-09-24 15:40:13 · 967 阅读 · 0 评论 -
nnet3-compute计算chain前向传播概率矩阵(声学模型输出)
假设已经训练好了chain模型,想计算每一帧的pdf-id的前向概率,nnet3-compute可以帮助我们做到nnet3-compute在steps/nnet3/compute_output.sh脚本中有提到,还有nnet3-compute-batch呢1 准备数据和特征chain模型所需要的的特征是mfcc的hires特征(40维),这部分见chain模型音素对齐2 输出chain前向概率(声学模型输出)2.1 构建输出计算命令feats="ark,s,cs:apply-cmvn --nor原创 2020-09-24 13:37:46 · 1172 阅读 · 1 评论 -
GMM音素对齐
假设已经训练好了gmm模型,想用gmm模型对齐的话,这个对齐一定要有y哦有一个特别注意的地方是kaldi里面GMM对齐有两种:align_fmllr.sh(更高级) 和 align_si.sh可参考aishell1的训练脚本去训练fmllr特征的GMM模型,这里用align_fmllr.sh1 准备数据这里是参考 steps/align_fmllr.sh中的脚本,首先要的数据必须是<音频,分词的标注结果>,这里的数据准备其实和ASR数据准备一样。2 计算特征得到fests.scp.原创 2020-09-23 17:33:35 · 1434 阅读 · 0 评论 -
lattice对齐ctm到phone
之前是lattice预测对齐到词,经过理解,也是可以到phone(音素的),之前一直用这,这里做一个总结和笔记。其实就是lattice-align-phones的用法,到音素(phone)上的对齐lattice-push ark:"gunzip -c 20200921.lat.bin.prune.gz|" ark:-|\lattice-align-phones --replace-output-symbols=true exp/chain/tdnn_1a_sp/final.mdl ark:- ark:原创 2020-09-23 16:30:26 · 513 阅读 · 0 评论 -
lattice对齐ctm到词
在理解lattice之后,发现lattice也是可以做音频上的预测对齐的,这个比强制对齐工具好用多了,有时候的确需要用。因为不需要提供y,这里做一个笔记,其实很早之前就开始用了。其实就是lattice-align-words-lexicon和lattice-align-words的用法,到词(word)上的对齐和ali.gz一样,lattice其实也是可以对齐的,对齐到lexicon,由于在prepare_lang.sh时将position-dependent-phones设置为了false,因此,不能原创 2020-09-23 16:28:06 · 730 阅读 · 0 评论 -
montreal-forced-aligner(MFA)强制对齐用法
1 下载库和模型这里测试的是在Ubuntu 18.04.3 LTS下环境下(centos7.4环境证实不可行,需要源码安装编译,win10是可以的)。1.1 库和模型准备【1】下载汉语(mandarin)的预训练声学模型和g2p模型MontrealCorpusTools/mfa-models【2】下载linux库MontrealCorpusTools/Montreal-Forced-Aligner releases【3】下载发音词典mandarin-for-montreal-forced-ali原创 2020-09-23 16:16:50 · 4301 阅读 · 3 评论 -
Praat语音标注说明
1 下载Praat官网praat6121_win64.zip字体文件DoulosSIL-5.000.exe解压直接使用双击Praat.exe即可2 使用技巧2.1 首次打开Praat只要Praat Objects窗口,关闭Praat Picture窗口2.2 导入.wav音频或.TextGrid打开窗口后,可以选择多个wav音频或.TextGrid读入(按Ctr或Shift)2.3 标注初始化TextGrid文件2.4 同时选择wav和对应TextGrid标注按Ctr同时选择w原创 2020-09-23 16:09:06 · 9762 阅读 · 8 评论 -
chain模型音素对齐
假设已经训练好了chain模型,想用chain模型对齐的话(正常都是用GMM对齐)1 准备数据这里是参考 steps/nnet3/align.sh中的脚本,首先要的数据必须是<音频,分词的标注结果>,这里的数据准备其实和ASR数据准备一样。2 计算特征得到fests.scp. ./path.sh. ./cmd.shmfccdir=mfccsteps/make_mfcc.sh --cmd "$train_cmd" --nj 30 data/test exp/make_mfcc/te原创 2020-09-22 17:52:40 · 1055 阅读 · 0 评论 -
理解lattice
1 lattice和ali.gz区别【产生的lattice文件】 是ASR转写的候选结果路径的存储(简单理解就是ASR转写的候选结果),将所有候选路径都存在了这个lattice中,就可以在这个候选结果中去挑选最佳的候选结果(即one best路径)。不需要提供y,不需要标注结果,只需要模型。【产生的ali.gz】是 GMM-HMM产生的(具体命令是gmm-align-compiled steps/align.sh 或 nnet3-align-compiled steps/nnet3/align.sh),原创 2020-09-22 16:11:42 · 1015 阅读 · 0 评论 -
kaldi安装SRILM语言模型库
ngram-count是SRILM语言模型库的一个命令,需要使用ngram-count的话,就必须安装SRILM库,在kaldi里安装这个库较为麻烦,这里做一个笔记。1 下载SRILM库看到网上很多介绍说去http://www.speech.sri.com/projects/srilm/download.html下载,但是根本访问不了,都有放弃安装的念头。遇到一个朋友,他跟我说BitSpeech/SRILMclone的。记得下载1.7.2的,1.7.3的我试了不管用。下载后请解压并更改文件夹命名为sr原创 2020-09-16 17:07:10 · 1882 阅读 · 0 评论 -
一些语音awk命令解释日志
1 awk -v命令解析text=data/local/train/textlexicon=data/local/dict/lexicon.txtdir=data/local/lmmkdir -p $dircleantext=$dir/text.no_oovcat $text | awk -v lex=$lexicon 'BEGIN{while((getline<lex) >0){ seen[$1]=1; } } {for(n=1; n<=NF;n++) { if (se原创 2020-09-16 14:03:17 · 476 阅读 · 0 评论 -
VS2019单独编译WEBRTC VAD模块
VS2019单独编译WEBRTC VAD模块1 准备工作2 导入vs20192.1 新建C++控制台工程2.2 包含编译文件2.3 修改配置2.4 额外修改2.5 右键项目编译即可1 准备工作vs2019社区版speech-vad-demo的github代码2 导入vs20192.1 新建C++控制台工程将speech-vad-demo根目录下的所有文件和文件夹拷贝到该新建的C++控制台工程目录下打开项目,记得选择visual studio的Debug x64配置2.2 包含编译文件将以原创 2020-08-14 17:02:22 · 689 阅读 · 0 评论 -
C++C递归删除文件夹
这段时间,意外用到这个,总结了一下。#ifndef _CRT_SECURE_NO_WARNINGS#define _CRT_SECURE_NO_WARNINGS#endif#ifndef _CRT_NONSTDC_NO_DEPRECATE#define _CRT_NONSTDC_NO_DEPRECATE#endif#ifndef _ANJOS_KEBA_#define _ANJOS_KEBA_#include <string.h>#include <iostre原创 2020-08-10 09:31:06 · 632 阅读 · 0 评论 -
linux下用Makfile多目标编译通用模板-用作以后提取
linux下用Makfile多目标编译-用作以后提取1 准备一个公共类2 准备两个main的cppdemo.cppdemo2.cpp3 撰写Makefile3.1 default_rules.mk3.2 kaldi.mk3.3 模块Makefile4 最后完成最近一直在用Makefile的单目标(单主函数的)编译,总结文档在linux下用MakeFile编译代码-用作以后提取,但是一直想写一个多目标的,一直去理解kaldi里面的精华,发现kaldi是支持多目标编译的,因此直接把kaldi的进行稍微修改和移原创 2020-07-27 15:53:37 · 204 阅读 · 0 评论 -
kaldi的网络可视化
kald的网络可视化1 nnet3-am-copy转换kaldi-onnx安装2 kaldi-onnx转换3 final.onnx查看3.1 模型前缀分析3.2 模型后缀分析Reference1 nnet3-am-copy转换 src/nnet3bin/nnet3-am-copy --binary=false --prepare-for-test=true final.mdl final_test.mdlkaldi-onnx安装git clone https://github.com/XiaoMi原创 2020-07-23 17:02:40 · 562 阅读 · 0 评论 -
arm开发板挂载win10和ubuntu haneWIN NFS Server
arm开发板挂载win10 haneWIN NFS Server1 win10上的HaneWIN NFS Server1.1 安装HaneWIN NFS Server1.2 HaneWIN配置21 win10上的HaneWIN NFS Server1.1 安装HaneWIN NFS Server下载地址【https://www.hanewin.net/nfs-e.htm】直接安装即可。1.2 HaneWIN配置在自己应用里搜索HanWIN Sofware中的 NFS Server:2...原创 2020-07-23 15:11:45 · 1280 阅读 · 0 评论 -
linux下用Makefile编译代码通用模板-用作以后提取
linux下用MakeFile编译代码-用作以后提取1 demo2 编译链接外部库2 Makefile可执行程序模板3 Makefile动态库模板4 Makefile 静态库模板1 demoCC=arm-hisiv300-linux-g++EXEC=demoOBJS=demo.o anjos-keba.oCFLAGS=-Wall -Wno-sign-compare -Wno-unused-local-typedefs -Wno-deprecated-declarations -Winit-self原创 2020-07-22 17:58:56 · 285 阅读 · 0 评论 -
浅浅理解Kaldi中的IO流
理解Kaldi中的IO流1 Read2 Write1 Readio-funcs.ccvoid ReadToken(std::istream &is, bool binary, std::string *str) { KALDI_ASSERT(str != NULL); if (!binary) is >> std::ws; // consume whitespace. is >> *str; if (is.fail()) { KALDI_ERR原创 2020-07-20 14:01:41 · 479 阅读 · 0 评论 -
语音识别思考
语音识别思考为什么要用HMM呢?为什么GMM开始要均值呢?为什么要用WFST?为什么要用HMM呢?为什么GMM开始要均值呢?为什么要用WFST?原创 2020-07-18 21:15:24 · 229 阅读 · 0 评论 -
kaldi的feat和featbin特征可视化
kaldi的feat和featbin可视化1 特征可视化1 特征可视化kaldi产生的特征由steps/make_mfcc_pitch.sh或steps/make_mfcc.sh产生ark文件ark文件可使用copy-feat命令来查看特征copy-feats ark:raw_mfcc_pitch_train.9.ark ark,t:demo.txt...原创 2020-07-17 17:03:11 · 733 阅读 · 0 评论 -
linux断点调试的一些问题
linux断点调试的一些问题1 案例程序2 gdb2.1 安装方法2.2 gdb命令集2.3 gdb调试3 cgdb3.1 安装方法3.2 cgdb环境变量3.3 cgdb调试4 gdbgui4.1 安装方法4.2 gdbgui调试5 Emacs最强版5.1 安装方法5.2 配置~/.emacs5.3 配置后的快捷键5.4 .bashrc中增加5.5 emacs下的C开发Reference1 案例程序【demo.cpp】#include <stdio.h>long func(int a)原创 2020-09-26 14:20:15 · 1231 阅读 · 0 评论 -
Kaldi脚本utils/int2sym.pl解释
Kaldi脚本utils/int2sym.pl解释1 用法2【中文解释】3 使用案例1 用法utils/int2sym.pl -f 2:10000 phones.txt2【中文解释】输入参数【-f】 将上一层管道流中的第2列到第10000列(没有到10000列也截止到有效列位置)的所有数字全部根据phones.txt进行转换为对应文字【phones.txt的内容】<eps> 0SIL 1a1 2ie2 3ing4 4#0 6#1 7......3 使用案例gun原创 2020-07-02 09:39:53 · 569 阅读 · 0 评论 -
kaldi utils/filter_scp.pl脚本解释
kaldi utils/filter_scp.pl脚本解释# This script takes a list of utterance-ids or any file whose first field# of each line is an utterance-id, and filters an scp# file (or any file whose "n-th" field is an utterance id), printing# out only those lines whose原创 2020-07-01 10:44:46 · 722 阅读 · 2 评论 -
kaldi vs2019编译cudadecoder模块的问题
1 未找到usleepthread-pool-light.h中添加:#define usleep(x) Sleep(x/1000)2 std中未定义iotabatched-threaded-nnet3-cuda-online-pipeline.cc中添加://window添加#include <numeric>using namespace std;原创 2020-06-18 10:33:10 · 480 阅读 · 0 评论 -
Kaldi VS2019下新建工程
Kaldi VS2019下新建工程1 创建kaldi-project工程1.1 新建项目-控制台应用1.2 配置新项目1.3 解决方案添加kaldi项目1.4 尝试x64编译2 配置kaldi-mfcc-demo2.1 kaldi-mfcc-demo项目添加引用在kaldi win10 vs2019 CPU和GPU下遇到的问题上建立了kaldi-window工程之后,就可以在此基础上编写自己的代码和创建自己的工程,用于测试1 创建kaldi-project工程1.1 新建项目-控制台应用1.2 配原创 2020-06-17 16:35:30 · 730 阅读 · 0 评论 -
C++或C下统计耗时常用语法
CPP遇到的问题1 时间1.1 C++或C下统计耗时常用语法1 时间1.1 C++或C下统计耗时常用语法#include <time.h>struct timespec start, next, end;clock_gettime(0, &start); //每次一个chunk的开始clock_gettime(0, &end);//单位毫秒spend = (end.tv_sec - start.tv_sec) * 1000 + (end.tv_nsec - sta原创 2020-06-11 09:35:57 · 719 阅读 · 0 评论 -
kaldi遇到的问题
kaldi遇到的问题1 cuda1.1 cuda decoder:Input features did not have expected dimension: expected 43, got 401 cuda1.1 cuda decoder:Input features did not have expected dimension: expected 43, got 40解决方案地址这个问题在GitHub上遇到过,并自己提供了解决方案其实是因为batched-wav-nnet3-cuda已经原创 2020-08-11 20:03:19 · 664 阅读 · 0 评论