- Algorithm
- Incremental Method
- Simulation
- Backtracking
- Dynamic Programming
- Largest Empty Interval
- Location Allocation Problem
- Knapsack Problem
- Algorithm Analysis
- Data
- Sort
- Set
- 排序资料结构: Search Tree 系列
- Sequence 资料结构: Array / List
- 大量 Point 资料结构: k-Dimensional Tree
- Region 资料结构: Uniform Grid
- Graph
- Tree 资料结构: Heavy-Light Decomposition
- Graph Spectrum(Under Construction!)
- Tree
- Binary Tree
- Directed Acyclic Graph
- Articulation Vertex / Bridge
- Reachability
- Bipartite Graph
- Clique(Under Construction!)
- Planar Graph
- Path
- Single Source Shortest Paths: Label Correcting Algorithm
- Shortest Walk
- Cycle
- Spanning Tree
- s-t Flow
- Feasible s-t Flow
- Cut
- Matching
- T-Join
- Hamilton Circuit
- Domination
- Coloring
- Labeling
- Vector Product
- Sweep Line
- Rectangle
- Rectangle
- Polygon
- Convex Hull
- 3D Convex Hull(Under Construction!)
- Half-plane Intersection
- Voronoi Diagram
- Triangulation
- Metric
- Number
- Sequence
- Function (ℝ)
- Matrix
- Root Finding
- Linear Equations
- Functional Equation
- Optimization
- Interpolation
- Curve
- Regression
- Estimation
- Clustering
- Transformation(Under Construction!)
- Wave (ℝ)
- Representation
- Signal
- State(Under Construction!)
- Markov Chain
- System(Under Construction!)
- Markov Model
- Function
- Gray Code
- Base
- Divisor
- Prime
- Residue
- Lattice
- Series(Under Construction!)
- Average Number
- Nim
- String
- Longest Increasing Subsequence
- Longest Common Subsequence
- Approximate String Matching
- String Matching
- String Matching
- String Matching: Inverted Index
- Count Substrings
- Palindrome
- Language
- Code
- Compression
- Correction
- Encryption
- Transmission
- Data
- Text
- 2D Graphics
- Audio
- Audition(Under Construction!)
- Image
- Vision(Under Construction!)
- Model
- Motion(Under Construction!)
- Camera(Under Construction!)
- Glass(Under Construction!)
- Computer
- Physics
- Biology
- Medicine
- Finance
- Education
- Standard Library
Audio
Audio
感受“声音 sound”是人类的本能。音乐、说话、风吹草动虫鸣鸟叫等等声响,都是“声音 sound”。
与科技装置有关係的声音,则称作“声音 audio”。电视播放的声音、电话通话的声音等等,都是“声音 audio”。
Sample
声音源自振动。耳膜感受空气振动,在脑中产生声觉。
要让电脑处理声音,必须预先让声音变成数字,也就是让声音经过“取样 sampling”与“量化 quantization”两个步骤。取样把时间变成离散,量化把振幅变成离散。
先取样(得到数列),再量化(四捨五入),最后得到一串整数数列。每个数字称作“样本 sample”或“讯号 signal”。
“取样 sampling”与“量化 quantization”的关键参数:
duration 持续时间:声音总共多少秒。数值越高,讯号越多。
sampling rate 取样频率:一秒钟有多少个讯号。数值越高,音质越好。电脑的声音档案,通常採用 48000Hz 或 44100Hz。手机与电话的声音传输,公定为 8000Hz。
bit depth 位元深度:一个讯号用多少个位元记录。数值越高,音质越好。电脑的声音档案,通常採用 16-bit 或 24-bit。16-bit 的每个讯号是[-32768,+32767]的整数,符合 C 语言的 short 变数。
channel 声道:同时播放的声音讯号总共几条。每一条声音讯号都是一样长。举例来说,民众所熟悉的双声道,其实就是同时播出两条不同的声音讯号。
取样频率、持续时间、声道,相乘之后就是讯号数量。再乘以位元深度,就是容量大小。再除以 8,可将单位换成 byte。
顺带一提,不管是声音或者是其他信息,只要是经过取样与量化得到的资料,总称 PCM data。“脉衝编码调变 pulse-code modulation, PCM”源自讯号学,所以名称才会如此不直觉。
Audio 的资料结构
在电脑当中,声音是很多串整数数列,资料结构是阵列。
各种声音资料的取样频率和时间长度不尽相同。统合方式:动态阵列、可变长度阵列。
各种声音资料的位元深度不尽相同。统合方式:採用 32-bit 浮点数,读档后将讯号数值缩放成[-1,+1],才进行声音处理;存档前调回原本范围。
Amplitude
声音讯号的数值,代表空气振动的幅度。基准订为 0,范围订为±32767(当位元深度是 16-bit)。 也有人使用其他设定 。
振幅高,听起来大声。振幅低,听起来小声。
Frequency
人类擅于感受的不是振动的幅度,而是振动的频率。
频率高,听起来尖锐。频率低,听起来低沉。
顺便介绍“取样定理”:x Hz 的波,取样频率至少要是 2x Hz,才能明确分辨上下次数,频率保持相同(而振幅总是失真)。
也就是说,取样频率 48000Hz,顶多只能记录 24000Hz 以下的声音。但是别担心,人类听觉范围是 20Hz 至 20000Hz。
Frame
讯号很长,变化很大,因此必须将讯号分成小段处理,使得小段之内变化很小。每个小段都称作一个“框”或“帧”。
当取样频率是 48000Hz、框是 512 个讯号,则此框占有 512/48000 ≈ 0.01 秒,人耳无法分辨这麽短时间的变化,人声也无法控制这麽短时间的变化,可以说是足够细腻了。
为了让变化更连续,于是让框交叠。
Frequency 的图表
以下内容的先备知识是“ Wave ”。
振动十分複杂,难以测量频率。计算学家的共识是:运用离散版本 Fourier Transform,将讯号数值分解成简谐波,解析频率。因为简谐波是最漂亮的振动方式,所以适合当作公定标准。
spectrum 频谱:一个特定时间点的频率分布图。
实务上的做法是:截取一小段时间范围的讯号,实施快速傅立叶转换,得到每一种频率的波的强度、相位。
比如 48000Hz 的取样频率、256 点讯号,则频谱总共 256 种频率。第一种频率是 0Hz,接著每一种频率相差 48000Hz / 256 = 187.5Hz。
前 128 种、后 128 种左右对称,后 128 种没有实际作用。呼应取样定理,资讯量只剩一半。
spectrogram 频谱图:所有时间点的频率分布图。
三维的绘图方式:如下面影片。
二维的绘图方式:将强度长短改成亮度高低,让一个频谱变成一条垂直线,让各个时间点的频谱横向拼成一个长方形。如下面动画。
人类对于地震波的感觉是取 log 的。如同地震波,人类对于幅度与频率的感觉也是取 log 的。有时候,频谱、频谱图的座标轴会取 log,以符合人类听觉感受。
Window
原本完整的声音波形,硬生生被框截断,频谱将产生误差。解法:将框的两端的讯号渐渐减弱,减少影响。也就是乘上一个中央高、两侧低的函数,数值皆介于零到一之间,称作“ 窗函数 Window Function ”。
Filter
频谱是分析声音的工具。滤波器则是修改声音的工具。
例如删除声音的高频部分,称做 lowpass filter。
滤波器有时域与频域两大类。
时域滤波器,直接的修改讯号。计算速度飞快,但是需要“数位讯号处理”的数学知识。例如 shelving filter 。
频域滤波器,间接的修改频谱。原讯号 FFT 得到频谱,修改频谱(例如把低频的强度和相位调成 0,形成 highpass filter),再 IFFT 得到新讯号。
播放声音。其构造是图论的 图 ,每个节点可以是声音,也可以是一些声音效果,例如变大声、回音、合成多个声音。将输入节点一路串联到输出节点,然后播放声音。
处理声音。读者可以自行探索。
浏览器为了安全起见,有时候预设禁止读取本机档案。如果你想做实验,必须修改浏览器设定。做好实验记得改回来。
Firefox 网址列输入 about:config security.fileuri.strict_origin_policy 的值改为 false http://kb.mozillazine.org/Security.fileuri.origin_policy
使用现成工具处理声音
知名的声音编辑软体是 Audacity 、 SoX ,声音生成软体是 Pure Data 。
课程、书籍、网站
https://class.coursera.org/audio-001/lecture http://www.ee.columbia.edu/~dpwe/e4896/outline.html http://www.cs.cf.ac.uk/Dave/CM0268/PDF/10_CM0268_Audio_FX.pdf https://ccrma.stanford.edu/~jos/ http://www.ness-music.eu http://www.dafx.de/ https://mitpress.mit.edu/books/audio-programming-book
Audio Synthesis(Under Construction!)
Audio Synthesis
合成。以建构组合的方式制作声音。
声音合成分为电子观点、资工观点,两套学问大相迳庭。这裡只谈资工观点。
电子观点:利用电子元件,以振盪器、滤波器制作声音,发展成电子琴。 资工观点:利用中央处理器,以简谐波、数学运算制作声音,发展成音乐编辑软体。
前人研拟了许多种声音合成的策略。加法合成是最基本的策略。
additive synthesis:加法合成。叠加许多个波。 subtractive synthesis:减法合成。利用滤波器,删除某些频率。 granular synthesis:颗粒合成。堆砌一丁点长度的声音。特色是嘈杂。 wavetable synthesis:建立声音波形的资料表,直接套用现成的波形。
前人创造了两种声音合成的原理:简谐波、数位波导。等你创造第三种。
simple harmonic wave :数学上,简谐波是最理想的振动方式。数学上,根据“傅立叶级数”,任意数列皆可拆解成不同频率的简谐波。因此有人认为,反向操作,叠加各种频率的简谐波,可以生成各种声音。 这是我设计的一套练习题 。
Music(Under Construction!)
Music
音乐。遵守规律的声音。
声音的要素:pitch、timbre、loudness、duration 音乐的要素:beat、rhythm、melody、harmonics
音乐家认知中的音乐,就是让以上要素遵守规律、遵守乐理。
例如 pitch 遵守十二平均律、duration 遵守全音符、二分音符、四分音符,harmonics 遵守大调、小调。
声音讯号的要素:amplitude(volume)、frequency(pitch)
然而计算学家别无选择,只能从声音讯号下手,从 volume 和 pitch 这两条路线开始发展。
Volume
音量。振幅决定音量。
大家倾向用平均振幅作为音量。举例来说,正弦波的平均振幅等于最大振幅开根号。
volume 和 loudness 不一样。volume 是声音讯号本身的大小声,loudness 是人耳感知到的大小声。人类的听觉系统,对于相同音量、不同频率的声音,听到的是不同响度的声音,请参考后面 Audition 章节。
Onset Detection
发声侦测 。给定声音讯号,找到音符的开始时刻、结束时刻。
onset 是声音开始时刻。offset 是声音结束时刻。
energy:能量 = 频域平方和 = 时域平方和。 bonk~ :每个频带分开统计。 相邻两帧,套用 Hann 窗,频谱强度点对点相除,找出商大于 1 的频率,加总其强度。 不同频率可做不同加权。 o(t) = sum w(f) max(0, |Xt(f)| / |Xt-1(f)| - 1) f bark~ :bonk~加强版,频带採用 Bark's frequency scale。
Beat Tracking
节拍侦测。给定声音讯号,找到音符们的间隔时间。
onset detection + dynamic programming :追踪振幅的 peak。
Rhythm Extraction
韵律侦测。侦测一连串的节拍。
ADSR Envelope: attack decay sustain release
一个数学模型,用来描述乐器演奏一个拍子的音量变化。可进一步用来分辨乐器。
敲击琴键时,振幅急遽上升、急遽下降。按住琴键时,振幅几乎不变。放开琴键时,振幅快速下降,直至归零。
为了更加拟真,像是 Yamaha 电子琴甚至推广到八段变化。
Pitch
音高。声音听起来的高低。音高高则尖锐。音高低则低沉。
关于振幅高低,有 volume 和 loudness 两个词彙可以区分实际高低和听觉高低。然而,关于频率高低,只有 pitch 一个词彙,代表听觉高低;于是计算学家只好把 pitch 也当作实际高低。
音乐当中,音高必须符合音阶。Do Re Mi Fa Sol La Si。人类研究了数百年,总结出“十二平均律”,建立了 音阶与频率的对应表 。每个音阶的频率是固定值,而且组合起来特别好听。
一、任何一个音阶, 频率乘以二(琴弦长度变一半),升为高音。 频率除以二(琴弦长度变两倍),降为低音。 二、以 440Hz 为基准,叫做中音 A。 也就是说,高音 A 是 880Hz,低音 A 是 220Hz,更低音 A 是 110Hz。 三、两个 A 之间,切成 12 段。考虑头尾,总共 13 个音阶。 音阶包含 A B C D E F G。其他音阶用升降记号♯和♭表示。 四、为了区别高中低音,于是补上数字。 以 C 为开端,不是以 A 为开端。 中音是数字 3。高音加 1。低音减 1。
Formant
不同乐器演奏相同音阶,听起来都不一样。一个原因是 ADSR,另一个原因是附带其他频率。根据驻波现象,基本频率的正整数倍,都会一起出现;通常标记为 F0、F1、F2、……,其中 F0 是基本频率,F1 是两倍,F2 是三倍,以此类推,统称“共振峰”。
相同乐器演奏相同音阶,听起来也可能不一样。例如铜管乐器的送气强弱,就会改变驻波、改变共振峰。
目前的实验都是选择特定时刻的波形 。似乎尚未有人研究形成驻波的过程、形成特定音色的原因。如果你知道请告诉我。
Formant Detection
F0 Detection(Pitch Detection)
共振峰侦测。求出特定时刻(实务上是一帧)的共振峰。
有时我们只在意 F0。
在时域,多种频率以不同强度叠合,波形複杂,无法精准辨认波长。先前介绍的 frequency detection 演算法效果不佳。
在频域,由于离散傅立叶转换的缺点 spectral leakage,频谱无法精准呈现驻波现象。先前介绍的 peak detection 演算法效果不佳。
寻找 F0 极度困难。理想的做法是捨弃演算法,改以物理仪器测量 F0。但是对于已经数位化,储存成 WAV、MP3 格式的声音,我们别无他法,只能从声音讯号下手,设计演算法去估计 F0。
gcd:频域所有峰的最大公因数。误差很大。 cepstrum:倒频谱,第一个高峰就是 F0。误差很大。 Maher-Beaucham :试误法猜 F0。 针对一个 F0,算 F0...Fn 跟频域所有峰的匹配误差,找误差最小者。 DIO :许多个 bandpass filter (Nuttall window),一个滤波器得到一个 F0。 峰到峰、谷到谷、零到零(上坡)、零到零(下坡),一共四个波长。 四个波长平均值,当作 F0。 四个波长变异数,最小的当作最佳 F0。
Formant Tracking
F0 Tracking(Pitch Tracking)(Melody Extraction)
共振峰追踪 。求出每个时刻(实务上是每一帧)的共振峰。
有时我们只在意 F0。
困难点:一、波形複杂,F0 容易误认为原本的两倍或者一半。二、attack 与 decay 时期,驻波尚未到达稳态,共振峰变化大。三、release 时期,驻波消逝,共振峰不明显。
实务上是用 dynamic programming、hidden Markov model 预测 F0 走向。
RAPT :动态规划。自己看。
Pitch Shifting(Pitch Modification)
Time Stretching(Time-scale Modification)
伸缩时间轴,重新取样,就能同时改变音高与长度。前面章节曾经提到过。
Music Composition(Under Construction!)
Musical Instrument
Audio Restoration
修复。 已有专著 。
Audio Multitrack Recording
多种声音合成一段声音。即是先前介绍的“混音 mixing”。
实务上的作法是使用音乐编辑软体,混合所有声音。可以自己扮演全部角色,也可以在网路上和陌生人组成一个乐团,关键字:Multitrack Acapella、Multitrack Cover。
Audio Source Separation
一段声音分成多种声音。
目前的做法是录制各种乐器的声音,在频域实施比对。难度很高。
Score-to-Audio Alignment
乐谱变成声音讯号。
记载音乐,大家一律使用数学符号,不过不是大家从小到大惯用的数学符号,而是小豆芽、五线谱。
播放真实的乐器声音: http://onlinesequencer.net/
电脑合成的乐器声音:档案格式 MIDI。
Audio-to-Score Alignment(Score Following)
声音讯号变成乐谱。难度很高。
Audio-to-Audio Alignment(Melody Recognition)
声音讯号与声音讯号的匹配。相仿的概念有哼唱选歌、旋律辨识、以声音搜寻声音。
目前的做法是套用比对数列的演算法 Dynamic Time Warping、分类数列的演算法 Hidden Markov Model 等等。
Audio Feature Description
特徵描述。找到声音的重点,以数值形式记录下来。
倒频谱 cepstrum:FT → abs → log → IFT → abs。频谱的绝对值(或绝对值平方)取 log,实施逆傅立叶转换。
bark frequeney scale 是人类听觉系统擅于感知的 24 个频带。
MFCC, Mel-frequency cepstrum coefficients :模拟人耳听觉系统,撷取各个频带的强度。
HPCP :音乐的调性。
Audio Genre Classification
依照曲风实施分类。
Audio Emotion Recognition
感情辨识。 已有专著 。
Music Composition(Algorithmic Composition)
电脑自动作曲。例如虚拟的作曲家 Emilly Howell。
Speech(Under Construction!)
Speech
语音。人类说话声音。Audio 与 Text 两大领域的合体。
Phoneme / Syllable
音素。ㄅㄆㄇㄈ……ㄢㄣㄤㄥㄦ。
音节。例如ㄏㄠˇ、ㄎㄜˇ、ㄞˋ。中文很特别,一个中文字一定是一个音节。唯一例外是儿化音:尾端连著ㄦ音。不过台湾人不说儿化音。
语言学以音素为基本单位,计算学则倾向以音节为基本单位。两个音素拼在一起,仔细观察波形,中间有著过渡过程,中间有著连续变化。各种拼法、各种变化,难以分解,只好视作一个整体,以音节为基本单位。
一、音节变成声音讯号:
理论上必须模拟口腔、舌头、送气。至今无人成功。
实务上是真人录音。人工朗读四百馀种音节,储存成声音档案,建立音节与声音档案的对照表。
二、声音讯号变成音节:
理论上必须分析各种音节的波形特性。至今无人成功。
实务上是分类演算法。给定一种音节的声音讯号,切 Frame,求听觉特徵 MFCC,额外综合一次微分、二次微分,用 DCT 压缩,得到一条数列(一个数值是 39 个係数、一个数值对应一个 Frame)。套用数列分类演算法 Hidden Markov Model 或者 Neural Network,辨识音节。
已有知名工具 HTK 、 libdnn 、 Kaldi ,大可不必自己实作。
之所以採用分类演算法、採用机率模型,是因为要包容每一个人的说话腔调。
延伸阅读:Phonetic Transcription
音标。音素所对应的文字符号。以文字记载发音方式。
音标已有国际标准,称做 国际音标 ,可以表示全世界所有语言的发音。中文并未使用国际音标,而是自创 拼音(中国) 、 注音(台湾) 。本篇文章採用后者。
延伸阅读:Vowel / Consonant
元音与辅音。母音与子音。不好解释,请读者自己查资料。
注音(台湾)的声母ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏ……,介母与韵母ㄧㄨㄩㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦ,不等于子音和母音。
母音,嘴巴有送气,声带有震动,能明显看到 pitch。子音,嘴巴有送气,声带无震动,抓不太到 pitch。根据嘴巴送气的方式,子音区分成爆音、摩擦音、气音。
既然以音节为基本单位,那麽母音子音不太重要。不过还是稍微提一下如何辨识母音子音。
一、辨识母音,可以使用 F1-F2 vowel chart。
二、辨识子音,可以使用 voice onset time :气流通过与声带震动的时机。清音浊音可以套用 voice onset time 的概念来分类。
不过想藉由声音讯号计算出 voice onset time,几乎是天方夜谭,因为麦克风侦测不太到嘴巴送气,只侦测的到声带震动。如果可以加个气流计,肯定有帮助。
Tone
声调。单一音节的频率变化。
普通话(中国)、国语(台湾)的声调,共四种,即是一二三四声。注意到轻声不是声调,轻声是音量较低。 粤语的声调 ,共九种。 闽南语的声调 ,共七种。都不好学。
世界上大部分的语言都缺乏声调,他们的声调仅仅是多音节单字的频率起伏。日语只有持平、上扬、下降,例如“あめ”,下降是“下雨”、上扬是“糖果”。英语只有持平、主重音、次重音,例如“present”,主重音在前是“现在”、主重音在后是“呈现”。
大部分的语言都缺乏声调。声调不是显学,声调没有知名演算法。读者请自行搜寻期刊论文。
http://person2.sol.lu.se/SidneyWood/praate/wavformedform.html https://speechformants.files.wordpress.com/2007/12/methods-of-formant-tracking-fadhlis.pdf
下面是“红豆生南国,春来发几枝”。绿色线是音量(dBSPL)。黄色线是音高(F0)。音高不变就是一声、音高上升就是二声、音高下降就是四声、下去再上来就是三声。
延伸阅读:歌曲与声调
歌曲常常受到声调影响。
音阶的频率是固定不动的,声调的频率是一直变动的,两者互相衝突。唱歌时,若想讲求音准,就不能做声调变化。
中文歌曲不做声调变化,很难听得懂歌词;若做了转音技巧,更加听不懂。英文歌曲不做声调变化,仍然听得懂歌词;若做了转音技巧,更加好听。
常有人说:中文歌曲不看字幕根本听不懂在唱什麽;英文歌曲转音好美、爆发力十足。这种崇洋媚外的心理,原罪就是声调。
想要解决听不懂的问题,最好的解决方式是在编曲填词之时,仔细考虑声调(以及稍后提到的韵律),让乐曲的音阶变化符合歌词的声调变化。经典范例是江蕙的家后,唱歌即唸歌,十足有味道。
国语流行歌手所写的台语歌,常常让人觉得缺乏味道,正是因为没有考虑声调。
Prosody
韵律。说话的节奏和声调。说话的抑扬顿挫。
例如口语说“星期天我们去郊游”,“星期天”速度轻快,“我们”相对地缓慢沉重。
语言学家自有一套解释韵律的方式,此非本人专长,这裡就不介绍了。计算学家解释韵律,只能从声音讯号的基本要素下手:音量变化、音高变化、发声长短。例如口语说“可爱”与“真可爱”,通常后者的“可”字时间较短、音高较低、音量较低。
这三者当中,目前研究最多的是音高变化。针对 F0 变化。知名的模型是 PENTA model 、 Fujisaki model ,大胆假设 F0 的变化是由那些因素造成的。
韵律可以比拟成语言的风格。相近的文化人种,韵律多半相似。心情起伏、健康好坏,韵律经常随之变动。计算学也许可以解析这些事情。不过台湾没人用计算学研究韵律,台湾最接近的单位是中研院语言学研究所。
Voice Activity Detection
1. butterworth 低通滤波器就是 k 点平均值,筛选频率 44100/k 公式 y[i] = a1*x[i+1] + a2*x[i+2] + ... b1*y[i-1] + b2*y[i-2] 筛个 400Hz 可做 VAD 用滑动视窗求 441 点讯号(0.01 秒) 的平方和当做个准则 2. 先 LPC 再做 FFT,频谱会比较圆滑,第一高峰第二高峰就是 F1 与 F2。 http://clas.mq.edu.au/acoustics/speech_spectra/fft_lpc_settings.html 44100Hz 成年大叔 44+2 个,成年大姐姐 36+2 个 http://mi.eng.cam.ac.uk/~ajr/SA95/node38.html a = lpc(hamming(512) .* sig, 16); h = (1 ./ fft([a zeros(1, 512-17)])).'; 3. 讯号/频谱平方和,算 10log10(sum)
使用现成工具处理语音
知名的语音处理工具有 Praat 、 SFS 、 VOICEBOX 。
Speech Synthesis(Under Construction!)
Speech Synthesis(Text-to-Speech)
语音合成。文字变成声音讯号。经典演算法是 MBROLA 。
台湾话由 工业研究院 、 网际智慧(自然输入法) 解决,没有对外公开技术。我推测的作法是:
一、人工朗读四百馀种音节(甚至两音节、三音节),储存成声音档案。 二、建立中文字(词)与音节的对照表。 三、以自然语言处理的演算法,进行分词。 四、汲取对应的声音档案。 五、适当调整音高、音量、音长,符合台湾人说话韵律。
语音合成非常实用。例如机场与火车的时刻地点广播、服务专线、文章朗诵,盲人网页浏览器、电子字典(不过现在都是真人发音居多)、机器人、初音未来等等。
Speech Recognition(Speech-to-Text)
语音辨识。声音讯号变成文字。
台湾话由谷歌解决,没有公开技术。读者要是进不去谷歌,可以先从 李琳山 、 陈柏琳 的课程下手。
目前的做法是将问题切开成声音与文字两大部分,依序击破。
声音部分:声音变成音节。 文字部分:音节变成文字。即是输入法!
声音部分。给定声音讯号,切 Frame、算 MFCC、用 DCT 压缩,得到一条数列(一个数值对应一个 Frame,数值是向量),套用数列分类演算法 Hidden Markov Model 或者 Neural Network,得到音节。知名工具是 HTK 、 libdnn 、 Kaldi 。
文字部分。建立大型语料库,统计每个词彙的出现频率,套用 n-gram 或者 Directed Acyclic Graph,统计最有可能出现的句子。知名工具是 NLTK 。
大型语料库是搜寻引擎公司的绝活,导致目前的语音辨识机制必须透过网路:先在手机解决声音部分,再上传谷歌解决文字部分。一来是让大家使用最新的语料库、辨识流行关键字,一来避免大家拷贝整个语音辨识程式。
语音辨识应用非常广泛。例如自动生成字幕:
语音查号:
语音搜寻:
语音拣货:
仓库管理是个很重要的工作, 以往的方式,是採用 RFID 技术, 也就是在每个货物上面贴条码标籤, 想要检验货物,就以人力拿著刷条码机, 翻转一下货物,找到货物上的条码, 然后扫描一下条码, 就像便利商店结帐那样。 接著货物的相关资讯,就会透过网路, 传送到中央机房的资料库裡面。 货物形状千奇百怪, 一手拿著刷条码机,一手要从货物上找到条码, 似乎有点麻烦。 科技始终来自于惰性, 就有人想到出一张嘴的方法:把语音辨识技术用在拣货上面! 只要戴个蓝芽耳麦,一边散步一边念出货品名称, 就能取代刷条码机了, 是不是很方便呢? 最厉害的, 是将货品名称转为人工语音, 直接对拣货员下指令, 如此拣货员就不用拿著一张报表、拿著一台 PDA, 能够空出一双手、到处去搬货物了。 说不定不久之后, 就能看到超商店员自顾自的碎碎念呢。
终极目标是靠一张嘴写程式。另外,语音辨识也可以做为关键步骤,发展其他功能,诸如语音翻译、语音转手语、语音命令(Siri、旋风衝锋)。
Speech Translation(Speech-to-Speech)
语音翻译。语音变成文字、翻译文字、文字变成语音。
科学家和工程师正在克服这个问题!Gartner 的预测是未来五年内可以突破。
Speaker Recognition
语者辨识。声纹辨识。分辨讲话的人是谁。
主要的做法是找共振峰。目前还在发展当中。
语者辨识的应用是身分鑑识,类似指纹辨识。
Speech Verification / Speech Evaluation
语音验证、语音评分。判断当事人说话是否标准、有多标准。
目前的做法是,套用比对数列的演算法 Dynamic Time Warping、分类数列的演算法 Hidden Markov Model 等等。另外提供音高、F1/F2 图等等资讯。
实际应用如英语学习软体、听障人士的语言训练。
Speech Emotion Recognition
语音情绪辨识。从当事人的说话声音,了解其心情。
已经有人建立语音情绪的声音资料库。目前的做法是直接套用 Classification 演算法,缺乏内涵。
实际应用如 躁症鬱症的区分 。
Speech Summarization
语音摘要。找到说话内容重点。
其实就是文字摘要,另外再考虑语调、情绪等等。我不清楚有没有人做。
Time-compressed Speech
长话短说。
Vocoder
人声实施声音特效。可以参考开源专案 WORLD 。
改变频率高低之后,听起来就像是变性一样。一般来说男生低、女生高,所以调高频率后听起来像女声,调低频率后听起来像男声。
Singing Voice Correction(Pitch Correction)
校正音高 。音痴的救星。偶像歌手必备工具。
校正之后再合声,难听的声音的也会变得好听,单调的曲子的也会变得丰富。所有流行歌曲都是这样处理。大家也都习惯听造假的声音。
知名软体是 Auto-Tune。
Singing Voice Synthesis(Speech-to-Singing)
文字转歌曲。给定乐谱和文字,变成歌声。
目前的做法是直接录制人类发声(略过 Text-to-Speech),然后套用 Vocoder 调整节拍和音高。
知名的应用是 VOCALOID 初音未来、UTAU 夏语遥。夏语遥的网站有提供人类发声的声音档案。
至于拉丁语系的音节系统也有人做,例如 oddcast 。
Singing Voice Recognition(Singing-to-Speech)
歌曲转文字。
Singing Voice Separation
从歌曲中分离人声与伴奏。
知名的应用是伴唱带。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论