- 博客(152)
- 资源 (9)
- 问答 (3)
- 收藏
- 关注
原创 word不用公式打出x bar/hat等特殊符号
打开Word文档。 按下Win + R打开运行对话框,输入charmap并回车,打开字符映射表。 在字符映射表中,选择“所有Unicode子范围(含隐藏)”。 在搜索框中输入“x”或者直接滚动查找,找到带帽子的X符号(通常在数学符号范围内)。 选中这个符号,点击“选择”按钮,然后点击“复制”。 返回Word文档,使用Ctrl + V粘贴这个符号
2024-08-18 14:45:22
4501
原创 瞬态噪声抑制算法流程解析
在语音增强领域,噪声通常可以分为稳态噪声(例如白噪声)和瞬态噪声(也称为非稳态噪声,如键盘声)。对于熟悉语音降噪的读者来说,通常的信号处理方法对稳态噪声有较好的效果,具体可以参考。然而,对于瞬态噪声,由于噪声变化迅速,传统的噪声估计算法难以准确跟踪,因此通常采用基于深度学习的方法来抑制瞬态噪声,参考。那么,是否可以使用信号处理方法来抑制瞬态噪声呢?答案是肯定的。为了不卖关子,先给大家展示一下信号处理方法在抑制瞬态噪声方面的实际效果,这或许会让你对信号处理的能力刮目相看瞬态噪声的抑制流程图如下所示。
2024-08-11 13:52:08
273
原创 WebRTC AEC中的舒适噪声算法
在回声消除技术中,舒适噪声生成(Comfort Noise Generator, CNG)算法是一种常用方法,用于减轻回声消除过程中带来的不适感和声音失真。CNG通过添加特定的噪声信号,模拟人耳的听觉特性,提升声音的自然度和舒适度。CNG算法的基本原理是将噪声信号与回声消除处理后的信号混合,使得混合信号在听觉上更加自然和舒适。其步骤如下:首先进行背景噪声估计,然后根据估计的背景噪声功率生成随机噪声,最后对生成的噪声进行加权处理。
2024-07-07 15:56:55
293
原创 LPC/LSP/LSF辨析
如下图所示,我们在20ms的语音频谱上绘制LSF(奇数用实线表示,偶数虚数表示)显而易见频谱中的峰值往往被狭窄的LSP夹在中间,但频谱中的局部极小值往往没有LSP在其周围。LPC模型可以视为一个全极点共振模型,它对信号的频谱包络进行建模,将信号的频谱包络表示为一系列极点,每个极点对应于信号的谐振频率。LSP具有良好的量化特性和高效性的表达性,因此在语音编码中被广泛运用。接着我们定义两个与A(z)相关的p+1阶的多项式P(z)和Q(z),这两个多项式表示人类声道的互连管模型,A(z)是它们的线性组合。
2024-02-19 17:18:41
600
原创 G.711语音编解码器详解
ADC 芯片的速度和精度指标是相互折中的。对应于不同的应用场景,ADC 芯片有着不同的设计架构,音频中常用的是Σ-Δ型,这里我们就不再展开了。波形编码的算法有很多种,常见的波形编码方式是脉冲编码调制(Pulse Code Modulation, PCM),其原理如下图所示,正弦波信号被均匀采样,对于每一个采样点用与其幅值最接近的值当做它编码后的值。值得注意的是,本文说的是语音编解码器,也就Speech codec,而常用的还有另一种编解码器称作音频编解码器,英文是Audio codec,它们的区别如下。
2023-10-15 16:06:16
1081
原创 如何生成丰富的啸叫样本?
用t表示离散时间索引,q表示离散时间时移操作,其中v(t)表示麦克风采集的源信号;在上述条件下,如果系统中的某个频率被激发,导致系统不稳定产生振荡,就会以啸叫的形式表现,啸叫通常出现在大约 200 到 5000 Hz 并且具有类似于单个正弦分量的非常窄带的特征,因为通常只有一个单个频率是不稳定。这里我们使用了两个不同的IR(IR的数据集有很多网上一搜一大把),由于啸叫的声音比较刺耳,这里就不放音频了,产生啸叫的频谱如下所示,可以看到第一个音频单频点发生啸叫,而第二个音频在多个倍频发生了啸叫。
2023-07-30 16:32:08
457
原创 【AI 孙燕姿】歌声转换技术原理浅析
SVCC2023的比赛分为两个赛道,分别是域内的歌声转换和跨域的歌声转换,但遗憾的是目前已经结束提交了,将在6月份公布结果,并在7月份提交workshop论文,举办方也在积极推进workshop的举办,计划在8~9月份举行。总的来说,SoVITS在VITS的基础上,将解码器改为NSF-HiFiGAN,输入改为ContentVec,在推理时对ContentVec预测和pitch decoder的输出进行聚类,以减少输入语音泄漏,并在原始网络之前增加了Conv1d。
2023-05-23 23:19:08
2302
原创 AI降噪的N种数据扩增方法
但这种方式针对规律的稳态噪声比较有效,如空调声,吸尘器的声音等,而针对突发噪声,如撞击声,键盘声,关门声等等效果往往不如人意。首先使用最多的就是让纯净语音和带噪语音按照不同信噪比进行混合,这样就可以得到丰富的带噪语音,一般采用随机数生成随机的信噪比,信噪比的范围可以根据自己的使用场景进行设定。不同设备的增益不同,不同距离的说话人声音大小不同,为了模拟这种情况,可以使用阶梯状的增益对语音信号进行处理。为了模拟不同的使用场景,可以通过RIR去模拟不同的房间对应的不同的混响时间。
2023-04-05 22:41:26
500
原创 都什么年代了,还在做传统波束成形
答案当然是肯定的,大名鼎鼎的NTT(日本电报电话公司,Nippon Telegraph & Telephone)提出了通过复高斯混合模型估计时频掩码和导向矢量,结合常用的MVDR(最小均方无畸变响应,Minimum Variance Distortionless Response)算法,在CHiME-3数据集上让ASR的WER下降了7个点。公式(6)的权重计算需要知道噪声的协方差矩阵,但有时无法估计出噪声的协方差矩阵,直接使用接受数据的协方差矩阵进行计算,即。此时,目标语音可以表示为。是噪声的协方差矩阵。
2023-03-26 19:04:35
733
原创 突破压缩极限的AI语音编解码器
语音编码的目的是在保持语音质量的前提下尽可能地减少传输所用的带宽,主要是利用人的发声过程中存在的冗余度和人的听觉特性达到压缩的目的。经过了多年的发展,目前语音编解码器大致可以分为以下几类:
2023-02-14 22:54:57
781
2
原创 语音相似度评价
语音相似度评价是用于测量语音之间的相似程度,常使用的算法是动态时间规整(Dynamic time warping,DTW),其原理是通过对齐时间序列来评估它们之间相似性。DTW是一种基于对齐的度量(alignment-based metric)与常见的欧式距离不同,DTW考虑到了时间维度上的信息,因此常用在信号处理领域,比如说话人识别,语音识别等。下面举个例子解释为什么要用DTW而不是欧式距离,这里我们有一个时间序列的数据集,包含了一些不同的样式。
2022-11-13 18:20:47
1711
原创 不使用FFT计算频段能量
当我们想计算某个频段能量时,FFT一般是首选项。但是当我们并不关注所有的频段,仅仅关注某一个频段,FFT较大的计算量使得其并不是一个较好的选择,那么有没有不用FFT就可以计算频段能量的方法呢?答案当然是肯定的,这就是我们今天要介绍的。
2022-10-10 22:34:21
692
原创 基于音频指纹的听歌识曲系统
听歌识曲,我想大家都不陌生。虽然不同的厂商识别率不同(可能是因为版权的原因),但是每个音乐APP都会有这么一个功能。我们以扣扣音乐为例,扣扣音乐听歌识曲功能比较丰富,不仅有基本的听歌识曲还有哼唱识别,识别到对应的歌曲后就直接返回对应的结果,如下图所示。这里我们只关注听歌识曲部分,这一功能通常使用音频指纹(Audio Fingerprinting)实现。其主要流程大致可以分为两步:1)离线的音频指纹提取;2)在线的音频指纹匹配。...
2022-08-15 23:11:04
1940
1
原创 使用互相关进行音频对齐
在计算一些音频指标如SNR的时候,我们需要音频信号与参考信号对齐,但有时候我们处理后的或者录制的音频并不是与参考信号对齐的,这就需要找到一种方法将它们对齐。
2022-07-24 21:30:25
1368
原创 WebRTC AEC 流程解析
WebRTC AEC由线性部分和非线性部分组成,个人感觉体现了理论和工程两个方面在算法落地上的作用,总的来说WebRTC AEC的效果还是不错的,但是我们知道AEC的效果与硬件关系很大因此需要很多的精力和时间去调试参数。...
2022-06-05 12:25:23
1968
1
原创 WebRTC AGC 流程解析
自动增益控制(Automatic gain control, AGC)是控制语音信号的增益稳定在指定水平的算法,可以避免语音忽大忽小引起的听觉不适。AGC作为音频3A算法之一,似乎并没有像ANR和AEC那样被较多的关注,但我个人觉得这是一个十分有趣的算法,因此在这里做一个流程解析。排版不好是因为优快云页面编辑器太垃圾了1. IntroductionWebRTC的AGC算法有以下几个模式,顾名思义,第一个模式是什么都不改变,但是会作削顶保护,然后是模拟增益自适应和数字增益自适应以及固..
2022-03-21 23:02:45
2524
原创 Python绘制Audition样式的语谱图
import numpy as npimport matplotlib.pyplot as pltimport librosa.displayfrom matplotlib.colors import ListedColormapaudaspec_data = [ [0.000009, 0.000025, 0.000020], [0.000227, 0.000394, 0.000344], [0.000630, 0.001132, 0.000994], [0.00.
2022-03-10 22:53:05
1757
1
原创 matplotlib.pyplot.imshow 自适应大小
如果使用matplotlib.pyplot.imshow默认参数画图的话,结果图像只有一小块这时候我们把它的aspect调整为auto,就可以自适应大小了plt.imshow(D, aspect='auto')结果如下图所示:
2022-03-08 22:59:50
10038
1
原创 arm32平台的libarmnn.so编译
ARMNN是ARM公司推出在ARM芯片上进行前向推理库和NCNN、MNN这种类似。网上大部分都是基于AMR64的,这里我给大家介绍AMR32的ARMNN编译过程。Step 1: 下载库ARMNN依赖于很多库,我们需要一个一个下载。首先我们新建一个文件夹叫armnn-dist然后把所有需要下载的库都放在这里面$ mkdir armnn-dist && cd armnn-dist$ export BASEDIR=`pwd`首先下载armnn和compute lib...
2022-02-04 18:51:07
1770
原创 DNS-Challenge 2020下载
download https://git-lfs.github.com/打开git bash,运行git initgit lfs installgit lfs track "*.wav"git add .gitattributesgit clone https://github.com/ShenYi666666/DNS-Challenge.git
2022-02-03 14:54:57
2490
6
原创 WebRTC ANR 流程解析
单通道的降噪大致可以分为谱减法、维纳滤波器、子空间、统计模型和深度学习这几类。其中谱减法和深度学习降噪前面已经介绍过了,这里介绍WebRTC的单通道降噪方法,其核心是维纳滤波器。WebRTC ANR具体细节需要有一定的噪声估计基础才能理解,因此这里只介绍整体流程,算法原理有时间再细致介绍。单通道的降噪大致可以分为谱减法、维纳滤波器、子空间、统计模型和深度学习这几类。其中谱减法和深度学习降噪前面已经介绍过了,这里介绍WebRTC的单通道降噪方法,其核心是维纳滤波器。WebRTC ANR具体细节需要有一定的噪声
2022-01-09 19:59:43
1688
原创 基于卡尔曼滤波器的回声消除算法
前面有介绍了卡尔曼滤波器,但是由于篇幅原因没有介绍其具体的应用,这里我们介绍使用卡尔曼滤波器做回声消除的过程。我们知道Speex和WebRTC的回声消除都是基于NLMS算法的,但是也有一些公司使用了卡尔曼滤波器进行回声消除。真正的回声消除还包括滤波器后的非线性部分,今天只讨论线性回声消除部分。回声消除回声消除以前有讲过,这里简单回顾一下,假设帧长为L远端信号为那么麦克风采集的信号可以表示为其中v(n)是近端信号,h(n)为声音从扬声器到麦克风整个系统的冲激响应回声消除
2021-12-13 22:49:30
4331
3
原创 离线Kaldi安装教程
这里的离线安装是指需要编译的环境都已经安装好了,即运行下面这条指令的结果是OK。extras/check_dependencies.sh1. 下载Kaldi并解压缩。这里建议使用linux系统下解压缩,因为windows系统解压缩会破坏掉软连接,上图是windows系统下解压后的结果,下图是linux系统下解压缩后的结果。2. 依赖库下载和安装各种压缩文件的命名可以参考上面的例子,也可以修改Makefile中的相关参数,如果你懒得修改,关注公众号语音算法组,回复 k..
2021-10-12 22:58:07
2072
原创 WebRTC VAD流程解析
语音活动检测算法大致可以分为三类,第一类就是最简单的基于阈值的判别方法,这个以前讲过了,参考语音活动检测;第二类是WebRTC使用的基于GMM的检测方法;第三类就是基于深度学习的检测方法,这个也讲过了,参考使用LSTM进行端点检测。废话不多说,开始进入正题。IntroductionWebRTC VAD支持8/16/24/32/48kHz采样率,不过都会重采样到8kHz进行计算,每一帧长度可以为80/10ms、160/20ms和240/30ms三种。VAD具有如下的四种模式,分别表示通用模式、低比..
2021-09-12 21:50:11
3288
1
原创 分帧,加窗和DFT
我们知道语音信号特性是随时间变化的,是一个非平稳随机过程。但是,从另一方面来看,语音虽然具有时变的性质,在短时间内其特性可以视为是稳定的。这是因为,人的发声器官的肌肉惯性,从一个状态瞬间转换到另一个状态是不可能的。在一个短时间内语音特性保持不变称为语音的短时平稳特性,贯穿于语音信号全过程的是短时分析技术。短时方法是用平稳信号的处理方法分析非平稳信号的关键,而进行短时分析的过程一般包括分帧、加窗和DFT。Step1.分帧语音信号分帧的目的是把若干个语音采样点分为一帧,在这一帧内,语音信号的特...
2021-08-08 19:56:39
2554
2
原创 从零实现机器学习算法(十九) 高斯混合模型
01. 高斯混合模型简介高斯混合模型(Gaussian Mixed Model,GMM)和隐马尔可夫模型(Hidden Markov Model, HMM)是语音算法中常用的统计模型。HMM前面已经讲过了,这里介绍一下GMM算法。当数据分布中有多个峰值的时候,如果使用单峰分布函数去拟合会导致结果不佳,这时候可以使用具有多个峰值的分布去拟合,如下图所示,可以明显的看到使用两个峰值的高斯模型比单个峰值的高斯模型能更好的拟合数据。GMM同K-means算法一样也使用了EM算法进行迭代计算。GM..
2021-06-20 21:12:47
1262
1
原创 语音可懂度评估(一)——基于清晰度指数的方法
目录01语音可懂度02清晰度指数03语音可懂度指数04扩展语音可懂度指数05基于清晰度指数评估可懂度的缺点前面我们介绍了语音质量的评价标准,今天我们关注语音客观评价的另一个重要指标——可懂度(Intelligibility)。语音可懂度的评估大致可以分为基于清晰度指数、基于语言传输指数和基于相干性指数三类,我们今天先介绍第一类。01语音可懂度可懂度是在给定条件下对语音理解能力的一种度量。如果说语音质量关注的是“how”,那么可懂度关注的则是“what”。一般可以通...
2021-05-02 22:50:48
4340
2
原创 Makefile同时编译.c/.cpp/.s文件
在进行嵌入式开发时,有的情况需要同时编译.c/.cpp/.s文件,这里以Ne10的fft为例给出一个Makefile的模板可以同时编译这些文件供大家使用。TARGET = fft_testCC = arm-linux-gnueabihf-gccSRCDIR = srcOBJDIR = objBINDIR = binSRCS_c = $(wildcard $(SRCDIR)/*.c)SRCS_cpp = $(wildcard $(SRCDIR)/*.cpp)SRCS_S = $(wi
2021-04-27 22:53:08
2468
原创 Python读取mp3数据
废话不多说直接上代码import arrayimport numpy as npimport soundfile as sffrom pydub import AudioSegmentfrom pydub.utils import get_array_typedef readMp3(filename): sound = AudioSegment.from_mp3(filename) left = sound.split_to_mono()[0] right = so
2021-04-19 22:11:02
3547
原创 Neon FFT 测试
/** Name: fft-test.c* Description: neon fft test* Author: Ryuk* Date: 04/05/2021*/#include <stdio.h>#include <string.h>#include "NE10.h"#define DEBUG (1)#define WAV (1)#define FRAME_SIZE (64)#define INT_16 (3.
2021-04-05 18:17:42
1191
2
原创 生成下雨的声音
1. 下雨天好睡觉今天是世界睡眠日,中国 3 亿人有睡眠障碍,有关数据显示收入越高睡眠越少。虽然每个人在床上翻来覆去难以入睡的原因各不相同,但是对于下雨天和睡觉更配这件事我相信没有人会否定。为什么下雨天更适合睡觉呢,其原因有三:其一,下雨天阳光被云层挡住,植物光合作用变弱,导致空气中氧气含量减少从而使得人们感觉到困;其二,下雨天乌云遮住了太阳,褪黑素开始分泌,让人们睡个好觉;其三,落雨声是白噪声在所有频段功率均匀分布,让人们听起来比较舒服。为了睡个好觉,前两个条件我们不好创造,但是下雨的声音我们可以试试
2021-04-03 22:52:49
692
原创 语音变速和变调的实现
实现变声的效果主要有两种方式,一种是对语音的本身进行修改,通过修改语音的一些特性达到变声的效果;另一种则是语音克隆,直接将输入语音特性转化成模板的语音特性。这里我们介绍第一种方式,语音克隆后面有机会再介绍。其实如果没有特定的变声需求,直接用不同的采样率读取原来的文件就会产生变声效果。基音同步叠加(Pitch Synchronous Overlap Add, PSOLA, 发音是:劈死欧拉)是一种将语音在频域(FD-PSOLA)或者时域(TD-PSOLA)进行调整的算法,经常用于语音波形合成,这里将.
2021-02-22 21:55:37
2595
2
原创 交叉编译Ne10库
编译之前请确定你的设备支持NEON加速cat /proc/cpuinfo | grep neon如果支持可以看到我们先从git上拉下代码git clone https://github.com/projectNe10/Ne10.git解压缩后在CMakeLists.txt目录下mkdir build接下来,我们修改下config文件vi GNUlinux_config.cmake我用的树莓派是ARMV7,所有config文件如下所示。set(GNULIN
2021-02-15 14:56:11
806
原创 “Unable to locate package” 的一种解决方法
博主今天搞树莓派的交叉编译的toolchain,安装包的时候各种问题,首先toolchain明明安装好了也添加到路径中去了,但还是遇到了unable to execute 'arm-linux-gnueabihf-gcc': No such file or directory然后根据网上查找的结果说64位的系统要安装lib32bz2-1.0,但是apt-get死活安装不上去一直报下面这个问题Unable to locate package lib32bz2-1.0后来终于找到了解决的办法
2021-02-14 16:26:05
15067
原创 将Windows主机或者Linux虚拟机的文件夹挂载到树莓派上
目录1、挂载Windows主机文件夹2、挂载Linux虚拟机文件夹我们玩树莓派有时候需要将编译好的bin档上传到树莓派上,这时候使用挂载的方式方便又快捷,这里简单介绍一下如何将Windows主机或者Linux虚拟机的文件挂载道树莓派上。以下操作需要设备在同一网段下。1、挂载Windows主机文件夹挂载Windows主机文件夹比较简单,首先我们创建一个文件夹,这里命名文share,然后右键属性选择共享然后点击共享,选择Everyone然后点击完成就可以了。可以win+R打开
2021-02-13 23:09:50
924
原创 C/Python/Matlab 读取PCM文件
Pythonimport arrayimport numpy as npimport osdef readPCM(fileName): file = open(fileName, 'rb') pcm_data = array.array('h') size = int(os.path.getsize(fileName) / pcm_data.itemsize) pcm_data.fromfile(file, size) file.close()
2021-01-21 23:11:17
2396
3
原创 音频数字水印的嵌入和提取
提到水印大家的第一反应都是下图这样的,在图片上有个大大的白色的字。但是数字水印和这种水印稍微有点区别,数字水印不仅仅可以嵌入在图片中,在各种多媒体数据中均可以嵌入水印,以保证生产方的知识产权和版权。音频数字水印,顾名思义就是把数字水印嵌入到音频中去。由于音频载体的特殊性,音频数字水印要保证数字水印的嵌入过程不会对音频本身造成较大的失真,本文就介绍数字水印中的一基本的技术。1. 最低有效位前面说到音频数字水印不能对语音质量造成较大的损害,不然语音失真产品就卖不出去了。为了同时兼顾不可感知.
2021-01-01 19:53:54
3862
1
原创 Numpy实现Matlab的xorr函数
废话不多说,直接上代码def AutoCorrelation(x, lags): N = len(x) auto_corr = np.correlate(x, x, mode = 'full') assert N >= lags - 1 auto_corr = auto_corr[N - lags - 1 : N + lags] auto_corr = auto_corr / np.max(auto_corr) return auto_corr
2020-12-08 23:12:07
925
onnx-modifier
2023-11-20
带有VAD输出的AMR编码器
2020-09-26
斯坦福大学机器学习课程个人学习笔记.7z
2020-08-24
alsa_examples.7z
2020-08-24
把一个txt文件分解成两个使用
2017-09-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人