【ongoing】语音解剖学 Speech Anatomy

前言: 在语音领域(无论你的目标是语音识别,语音合成,亦或是其他跟语音相关的项目), 曾作为或者目前仍是初学者的你,一定经历过这样一个步骤。某一天,兴致勃勃地翻开了刚到手的语音教材,回味无穷的读完了书的序言以及第一章的引言,觉得自己一定要在某方面创下一番天地,已经准备好接受各种理论和挑战的洗礼。翻开书的第二章,两个大字映入了你的眼帘,“解剖”。此时此刻你也许会想,这很科学,毕竟我们处理的是语音,一切都有着其生物基础,想必我们能从中受益良多。而无论你是小心翼翼的一字一句的斟酌也好,还是狼吞虎咽的咀嚼也罢,你会发现大多数生理细节非常不重要,或者说各种晦涩难懂的专业名称让你云里雾里。 不过好在聪明的你和作者总不会让这份辛苦是分无用功,虽然有很多琐碎没有给你留下深刻的印象,你还是依然能够有所收获。比如对发声机理的研究是如何映射到语音合成技术中的,对人耳听觉的测算如何改善了语音识别的数据特征,对大脑神经的实验又如何延伸出了当下最火的神经网络模型。 作为笔者的我,刚刚正式踏入语音领域,了解到的还只是皮毛与表面,但依然怀揣着一颗勇往直前、不撞南墙不回头的心。希望通过对人体的生理更细致、更形象的了解与研究,产生出更多有创造性的、有意义的概念,为语音领域添个砖、加片瓦。因此,本文会不断更新和整理与语音相关的生理知识,从文字,二维、三维图片,模拟或真实视频、语音等多方面来对生理构造进行描述,旨在使各个细节更加清晰。也欢迎对相关内容的感兴趣的人,提出宝贵的建议与意见,望一起点燃精神之火,撩了语音这个广阔的平原。 正文序: 从狭义来讲,语音单纯是指人发出声音这一行为,它发生在人呼吸运动中的呼这一环节,与之相关的生理结构似乎并不算很多。然而从广义来讲,产生、接收、理解语音都是语音相关的人体活动。从这个角度来看,人体上半身的所有器官几乎都参与了这项活动。按功能的不同,可以将上半身划分为四个区域。用于语音气流的开端肺、气管;用于调节气流从而发声的喉、咽、口、鼻;用于接收语音,并对自身语音产生反馈的耳;通过控制以上所有运动,并对语音进行理解的大脑。接下来就会依照如上这个自底向上的次序,来对这四部分生理结构和功能依次进行讨论。 *注: 由于篇幅有限,以及便于阅读。有些更加细枝末节,似乎偏离了语音讨论范畴的内容,会用紫色标识出来。如有兴趣,点击可以跳转到相关的帖子,查看更多详细的解释。 Ⅰ气流的产生: 想要讨论语音气流的产生,就不得不从人的呼吸开始讲起。人产生呼吸的物理本质是肺部与外界气压差所产生的气流运动。当肺部的气体压强小于人体外的气体压强时,就会产生从外界流向人体肺部的气流;反之就会产生由肺部流向外界的气流,这个气流也就是我们语音的载体了。再进一步讨论压强变化的原因之前,首先明确一下本文所认定的气流的通道,细节如下图所示。气体可以分别从鼻腔与口腔流入咽,再流入喉,经过气管与各级支气管输送到肺部,最终停留在肺泡中与血管中的血浆进行气体交换。 依旧从物理层次来分析,压强由三种因素来决定,分别是温度、气体的量和体积。前两者与压强成正比,后者与压强成反比。人是一个恒温动物,虽然这个恒温是在调节中动态实现的,但其动态变化似乎不会对气体压强产生极大的影响,因此认定这个温度变化在呼吸中的作用可以忽略不记。 同样的,虽然二氧化碳、氧气等气体分子在肺部的肺泡与血管血浆中不断发生着气体交换,并且显而易见的改变了肺部气体的量,但这份改变在数量级似乎远小于气体体积在呼吸中产生的改变,因此也可以忽略不计。以上两处忽略不计确实缺乏更具体的数据和实验进行作证,如果今后有更多的发现,或许会对其进行修正与补充。综上所述,气体的体积成为了影响呼吸的决定性因素。而通过观察整个气流流通的通道可以发现,体积真正发生改变的地方就在于人体的肺部,或者说人体的胸腔之中。 又是什么导致了肺在胸腔中的体积变化呢,而什么是胸腔呢? 在回答这一问题之前需要简单描述一下肺部的生理构造。如下图所示,与这份体积变化有关的生理结构在内而外分别是:①肺(lung)本身。②包围在肺外部胸膜(pulmonary pleurae)③肋间肌(intercostal muscles)及肋间神经(intercostal nerve)④横膈膜(diaphragm)及膈神经(phrenic nerve)。其中胸膜虽然体积很小,但确实连接各个部分的一个重要环节。他(胸膜)是由两层浆模(serous membranes)围绕而成的,有点像游泳时用的救生圈。胸膜内侧的浆模贴紧肺的表面称为壁胸膜(parietal pleura),胸膜外侧的浆模贴紧肋骨下的肌肉以及横膈膜的上表面称为脏胸膜(Visceral pleura)。胸膜内部气体较少,始终低于大气压强,内部的压强被称为负压。当胸膜没有破损时,肺部的压强也永远大于胸膜内的压强,因此肺与胸膜时刻相依在一起。肺随着胸膜的移动而移动,而胸膜随着肋骨间的肌肉以及横膈膜的移动而移动。因此决定肺部体积的因素有两个,一个是肋间肌,一个是横膈膜。以肋骨环绕为顶,横膈膜为低的腔体,被称为胸腔。因此,胸腔的变大与缩小,同肺部的变大与缩小其实是一致的。后文不再做以区分。 这两个因素之间其实是相互独立又相互影响的。肋骨之间存在肋间肌,并由肋间神经所控制。被控制的肋间肌又可以分为肋间外肌和肋间内肌,分别使得肋骨向前以及两侧扩张和收缩,从而造成胸腔的变大与缩小。横膈膜是一个凸型的由肌肉纤维组成的较薄的隔膜,分隔着胸腔和腹腔。隔膜肌的收缩可以使得横膈膜中心向下移动,两侧向上移动从而扩大胸腔,挤压腹腔。当腹腔受到挤压时,腹肌就会向外膨胀,也就是肚子会鼓起来。而且受到挤压的腹腔也会间接对肋骨造成影响,使其产生一定程度的扩张。 相反腹部肌肉,腹肌(abdominal muscles)还可以主动收缩,这会间接使横膈膜中心上升,两侧下降,以及肋骨一定程度的缩小,最终导致胸腔的减小。 除了肋间肌和横膈膜这两种肌肉之外,其实还有上文提到的腹肌以及其他的很多肌肉可以对呼吸产生着影响。值得一提的是这些肌肉并不一定都会在呼吸时发生作用。此时我们要把呼与吸分开来谈了。在正常的吸气时,肋间外肌与横膈肌会主动收缩,而在快速或者很浅的吸气时,人下意识地,只会控制肋间外肌发挥作用,此时压强的变化会比较小,吸入的气体总量要小于两种肌肉同时作用所吸入的气体总量。这也是为什么唱歌的人往往需要专门练习腹式呼吸,其实就是让人体时时刻刻都利用横膈肌来进行呼吸,从而保证吸入更多的气体,以便于唱歌时使用。在正常的呼气时,几乎没有什么肌肉在发挥作用,仅仅依靠各个组织与器官的自然收缩,逐渐恢复吸气时所造成的变化,从而让胸腔自然的缩小。当有需要时,肋间内肌和腹肌以及很多其他肌肉则可以辅助加强这一变化,从而让胸腔更快以及更大程度的缩小。 目前为止我们知道了,人体就是通过控制各种肌肉的收缩与松弛,造成了胸腔的变大与缩小,改变了肺部内的压强,最终造成了人的呼和吸。那人体是通过什么来控制肌肉的呢?又为什么要控制肌肉,来完成呼吸这项活动呢?答案很简单:神经;补充血液中的氧气,排除血液中多余的二氧化碳。下面我们就神经展开更详细的探讨,所有的神经的控制最初都来源于大脑,因此我们就从大脑开始讲起。 启迪: 在讨论了上述语音气流产生的生理构造之后,针对于语音研究来说到底能有什么意义呢? 就目前而言,语音模型中真正涉及呼吸这一概念的,似乎只象征性的存在于语音合成中的声源-滤波器模型(source-filter)。而且作为声源的呼,为了计算上的简便或者实现上的可行,通常被简化为仅含有有限频率分量的声波或者白噪声。如此一来,上述所讨论的一大堆的呼吸的机制,就完全被省略掉了,真是可惜。 诚然,从声学角度来考虑,口、鼻、咽、喉等对气流所产生的调节决定了语音当中的特性,而肺部、气管传出的气流的特性与最终的语音相去甚远,被忽略也就无可厚非了。然而在很多现场教学中,对人咬字、唱歌等语音相关的训练,呼吸的作用缺从没有被忽视过。这确实是由于一个现实限制所决定的。因为呼吸是可以用肉眼或一些简单的检测装置,通过对体表的观察,就能分析出来的;而口、鼻、咽等部位的动作缺很难被观察,从而给与指导。但刨除这个现实问题来看,这依然能够证明,呼吸在语音中存在着不可忽视的影响,对呼吸的控制可以直接对语音产生影响。更具体的分析,呼吸的方式会直接决定喉部声门处气体压强的大小,这最终会影响声音的强度(幅度),连续性以及声带震动的频率。而以上三点更是决定一个歌手演唱水平的关键因素。[2]从这个角度看,呼吸似乎决定了人类对语音控制程度的高低。另外在生理机构方面,控制呼吸的神经与肌肉,与控制口、鼻、喉、咽等改变气流的神经与肌肉之间也许存在着反馈,从而相互影响。 不成熟的模型方面的思考: 1 在语音识别和合成中,对于韵律方面的研究,也许呼吸是一个很有必要引入的参数。 2 从生理上讲,人说话时长的上限完全由呼吸来决定。因此,在语音识别中,或许可以通过呼吸间隔,以及每一次的发音长短来预判下一次发音的长短。 3反过来考虑,如果能从语音中分析呼吸的特征,本身就有其医学意义。呼吸的频率就是生命特征(vitals)的一个很重要的指标。       参考文献: 【1】Fundamentals of Speaker Recognition, Homayoon Beigi, 2011 【2】The science of the sining voice, Johan […]

【伪】DIY一台用来娱乐和个人研究的PC

我没有学习过相关电脑的专业知识,也并非是组装电脑的爱好者。这里记录的是我所看到的经验贴,以及由此我所做出的决定 和最终结果。 网上大多DIY经验贴,要么是针对于游戏的[4],要么就是针对于研究的[1][2][3],好像没有人喜欢把两者相提并论。 就好像现在大多的技术博客一样。但我却总是一个拎不清的人,就喜欢把政治不正确的东西混在一起说。在组装电脑所需的硬件里: 对于深度学习来说,最重要的就是GPU;对于游戏来说,最重要的也是GPU。 两相比较之下,深度学习对于GPU的要求还要远甚于游戏。但无论如何,两者之间在硬件方面并没有什么冲突。 两者的冲突仅在于系统。游戏往往都在windows,而研究都在linux。所以一个想要兼容娱乐和研究的PC,无非就是安装双系统罢了。 双系统共用电脑的一切硬件,除了电脑中的硬盘。因此为了更好的体验,顶多就是考虑买一个更大的硬盘或者额外的移动硬盘。 个人预算:1500刀 要求: 1 支持大部分主流游戏 2 支持研究级别的深度学习运算 3 相较于台式机而言的便携 4 硬件方面不次于同价格的品牌机 一、硬件的选购与组装 【1】 Build a Deep Learning Rig for $800 【2】 Which GPU(s) to Get for Deep Learning: My Experience and Advice for Using GPUs in Deep Learning(2017) 【3】 A Full Hardware Guide to Deep Learning(2015) 【4】 Portable LAN Build […]

20171105 工作报告

原本计划周日来公司,完成些工作。 却因为搜了一下国内的语音识别岗位,心情有些许低落。没有心情继续工作,随便写点什么。只写给自己,但应该不涉及隐私,遂不加密码。 4-17入职,到现在已经半年了,目前的进度如下 1 使用thrax定制grammar,使用openfst辅助修改G.fst 2 完成一个naive information extraction system,分别写了python和java两个版本 3 熟悉公司内部的decoder 代码,具体的说是 特征提取(MFCC),WFST合成,Viterbi,prune , 以上功能的实现。看过的代码,目前为止掌握程度大概在60-70%左右。从整个语音识别的项目来考虑,掌握程度可能不足30%,甚至20% 4 熟悉WFST compilation的步骤 和 里面涉及的trick。 这个掌握程度目前也就是5%-10% 5 评估了50份左右的简历,旁观面试了10个左右的人。 总结:除了声学模型以外,语音识别后端的内容都接触了一下。应该能够更有效的计划之后的学习和职业发展。   针对当下所做的事情,例数不足: 1 心态过于安逸,前期学习劲头足,中期懈怠,目前有抬头的趋势。但因为需要掌握的内容过多,看不清什么时候能够结束学习阶段,开始产出。 2 公司规模小,模型也并不与当下最流行的一致。完成工作已经是有难度了,更不要提拓展自己的技术水平 和 视野。 针对看到的国内语音识别岗位的要求,例数不足: 1 普遍提到的DNN,RNN,只有理论上的掌握和课堂上的作业,缺乏实际经验 2 没有博士学位,以及学术前沿的掌握不能 3 数据结构与算法,没有系统学习过,无法对自己的状态进行评估。应该水平很低 4 python 或者C++ ,任意一门都无法评估自己为精通。阅读代码水平中上,写代码水平最高为中。 除工作需要之外的,可以实现的内容: 1 动手实现kaldi的一个语音框架的搭建,再与工作中的性能进行比较。再从比较中,找到兴趣点,展开学术发展的研究。目的在于产出自己对于某一环节的理解,甚至贡献。(11月底-12月初开始) 2 参加一个数据结构与算法课程,以便于提高自己的代码水平和认知(coursera上的课程,数据结构与算法套餐,6个课程,前5个课程,每个课程1个月的时间完成,最后一个课程未知)    

C++学习记录贴

在阅读公司的decoder的C++代码,有很多细节不知道,不清楚,在此做记录,加深印象。 1 C++类成员冒号初始化以及构造函数内赋值    , 不仅仅是类如此,struct 中也是一样的道理。 2 size_t为什么存在?   3 void * 及Void的用法 4 static_cast, dynamic_cast, const_cast探讨 5 auto_ptr, shared_ptr, weak_ptr, unique_ptr, c++ 智能指针用法详解 6 boost::program_options 用法详解 7 【C++11】新特性——引入nullprt  8  深入浅出windows的dll文件 ;  Dll in linux(英文) 【】

简明 Vim 练级攻略

Originally posted on globalinheart(蓝心):
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。 ——————————正文开始—————————— 你想以最快的速度学习人类史上最好的文本编辑器VIM吗?你先得懂得如何在VIM幸存下来,然后一点一点地学习各种戏法。 Vim the Six Billion Dollar editor Better, Stronger, Faster. 学习 vim 并且其会成为你最后一个使用的文本编辑器。没有比这个更好的文本编辑器了,非常地难学,但是却不可思议地好用。 我建议下面这四个步骤: 存活 感觉良好 觉得更好,更强,更快 使用VIM的超能力 当你走完这篇文章,你会成为一个vim的 superstar。 在开始学习以前,我需要给你一些警告: 学习vim在开始时是痛苦的。 需要时间 需要不断地练习,就像你学习一个乐器一样。 不要期望你能在3天内把vim练得比别的编辑器更有效率。 事实上,你需要2周时间的苦练,而不是3天。 第一级 – 存活 安装 vim 启动 vim 什么也别干!请先阅读 当你安装好一个编辑器后,你一定会想在其中输入点什么东西,然后看看这个编辑器是什么样子。但vim不是这样的,请按照下面的命令操作: 启 动Vim后,vim在 Normal 模式下。 让我们进入 Insert 模式,请按下键 i 。(陈皓注:你会看到vim左下角有一个–insert–字样,表示,你可以以插入的方式输入了) 此时,你可以输入文本了,就像你用“记事本”一样。 如果你想返回 Normal 模式,请按 ESC 键。 现在,你知道如何在 Insert 和 Normal 模式下切换了。下面是一些命令,可以让你在 Normal 模式下幸存下来: i → Insert 模式,按 ESC 回到 Normal 模式. x → 删当前光标所在的一个字符。 :wq → 存盘 + 退出 (:w 存盘, :q 退出)…

[总结]语音识别职业发展Aug2017

这篇文章起源于,知乎的一个邀请《即将入学的语音学研究生,未来希望从事语音合成以及语音识别方面的工作,需要学习哪些技能?  除了希望以下的回答能够给这个问题提供一些思路以外,同时也是对入职3个多月以来所干,所学,所想的一个总结,希望能从中明确一些未来的职业规划。 问题描述: 题主今年考上东部某211中文系应用语言学下的语音学方向研究生,了解到导师研究方向丰富,包括:语音韵律的分析和建模,语音声学特征与发音生理、听觉心理、脑神经机制、语言结构、交际情感、社会文化之间的关系,以及语音信息在人机智能通讯、语言教学实践、言语康复工程中的应用。心感迷茫,不知道未来是否能同自己规划的一样。如果不能,题主希望能够以研究生3年作为一个缓冲期,不断充实自己,学习技能,故而求问。 最近听从身边朋友的建议已经开始自学python。 就问题而言,我的回答会稍微有些偏题,不会针对文科生的身份进行特别多分析,因为我不是很清晰地了解文科生与理科生思维上的差别。并且其他人也已经在这方面进行了很多的讨论了,我也说不出更多了。 我所想提供的是,在语音识别的团队或者部门中,现阶段什么知识技能是重要的,甚至不可或缺的。 另外还需要声明的是我的身份标签,这样是为了便于理解这个回答是站在什么角度,什么高度上写出来的。我是一个刚刚入职语音识别领域3个多月的语音工程师(经验少),所在的公司是美国的一家规模很小的公司(识别英语),语音识别的技术团队也就是5人左右(规模小)。所以我的情况与比较大型的公司或团队有所不同。表现为两个方面。在系统的模型方面,大公司往往采用最新的模型(通过足够的人手来更新跟进系统,通过大量的训练数据和优良的计算设备来得到理想的识别率)。而小团队由于各个方面的欠缺,往往是对历史稳定模型的微调,以相对较缓的速度朝着最新的方向发展。即使如此,小团队依然还能存活就在于第二个方面,目标的不同。 大公司往往面向的群体大或者识别的内容宽泛,小团队往往面向特定的团体或者识别的领域比较局限。因此,两者或许在最终结果上能够有着不分伯仲的表现。物尽其用吧。综上,我的视角更多的来源于小团体,而非大公司。 现在开始正面回答问题(图片与文字相互解释):   上方的结构图,是依据我所见到过的语音识别工程来绘制的。黑色实线框为通常都会含有的模块,虚线框则表示该模块不一定会存在于所有语音识别系统中,红色文字标识的是可能涉及的知识、理论、工具、编程语言等。红字的部分有些混乱,也肯定有很多缺失,这是因为我对于整个系统还没有完全的掌握,以后等我了解更深入,再进行更改吧。 各个模块细节,在此就不一一做以阐述了,毕竟这不是要讨论的内容。我简要地用文字描述一下整个流程。 语音识别在初始通常分为两条线,一条是语音,一条是文本。 对于语音这条线来说,语音经过采集、传输最终存储到某终端。然后存储好的语音经过预处理、特征提取的变化之后,用来训练各种神奇的声学模型。前者大多涉及硬件与通信方面的知识,后者大多涉及的是机器学习方面的知识。不过在语音领域,后者又一般局限在几个模型之中(上图中列出了具体名字)。这个部分训练时的输入是生活中的实际语音,训练的是模型中的各个参数。 实际应用时输入的是实际语音,输出的是这个语音中每一帧有可能是什么音的概率。 对于文本来说,首先是收集与项目相关的文本。然后就是对文本进行一定的预处理,再训练某种语言模型(大多是N-gram)。因为我对语言模型的实践经验特别少,暂时还不能指出其中最需要的知识技能,但应该有一些和NLP(自然语言处理)是相关的。(值得一提的是,NLP中的N-gram,几乎是每一个语音人都知道的东西)。从实践上来讲,语言模型的作用就是限定语音识别能够输出的结果。基于项目,一般有两种需求。一种需要输出的内容是有限的,可数的。一种是输出内容无限的,不可数的,在一定领域内有意义的。 这个部分训练的时候输入就是文本,训练的是你所设计的模型的参数。 实际应用时输入的是一串文本,输出的是这串文本合理的概率。 理论上有了上述两个模型之后就可以进行语音识别了。但实际实现中出于效率的考虑,希望能够把两者结合在一起。因此人们就发现了WFST这个神奇的模型,他可以有效的把声学模型和语音模型结合在一起,以便于更加快捷,高效的得出识别结果。这所涉及的理论基本就是WFST本身,及其如何应用在语音模型中。实践时需要掌握的则是任何能够操控WFST的工具或代码。 再得到语音识别结果之后,由于实际项目的需求,很有可能还有额外的操作,对识别的内容进行进一步的分析。比较常见的需求是信息抽取(IE)。这里和语言模型其实是相呼应的。这一步骤的本质就是将无限可能的文本,改变为有限的,结构化的输出。所需要的知识我预计是逃不出NLP的圈子的。 最后语音识别或者NLP分析之后的结果会送到前端,就完全跟实际项目有关,而跟语音识别这一技术无关了。这时考验就是纯纯的代码开发方面的能力了。 最后的最后回到问题本身,从文科背景来考虑,我觉得NLP可能是更适合的一个在语音领域发展的方向,或者寻求方法将自己对语言的研究成果转化到语音识别中语言模型的构建上。至少从我所在的团队来看,是真的急需这样的人才的。另外,从工作的角度,如果你觉得你所学会的内容,能对我上述所提到的任意一个模块,有所帮助,都是可以的,不需要非得掌握每一个模块,有个概念就可以了。另外的另外,这里提到基本都是研究生级别或者本科生高年级需要掌握的技术。如果你发现哪个技能实在理解不了,可能需要再往回找相关的基础知识来补充,补充的方式可以有找国内、外的公开课,看国内外的教材。(如果你选择看语音方面的教材话,有些教材会在书的附录中涵盖基础知识的教学。) 最后的最后的最后回对我自己说,我目前为止的对各个模块都有一丝或者一些的接触。图片中列出来的技能肯定是我有所接触,才知道的。 目前这三个月功夫花在了有限可能的语言模型上(即利用Thrax搭建基于命令的Fst)以及一个较简单的基于某医疗app的IE系统。 接下来的一两周时间用来巩固当前的技能。再之后可能要转向decoder方向。我急切的想要了解到底WFST好在哪里,能否做更多的扩展,使语音识别的模块更多的联合在一起。            

【ongoing】语音解剖学-补充材料一-呼吸 Knowledge of Breathing

本文旨在对博文《语音解剖学 Speech Anatomy》中呼吸章节的内容,进行更多补充说明。 一,有关气体通道: https://en.wikipedia.org/wiki/Breathing , Passage of air 二,有关气体温度: Usually air is breathed in and out through the nose. The nasal cavities (between the nostrils and the pharynx) are quite narrow, firstly by being divided in two by the nasal septum, and secondly by lateral walls that have several longitudinal folds, or shelves, called nasal […]

罗宋汤(高压锅)

  成品(final)   材料(materials) 西红柿、土豆、牛腩、洋葱、番茄酱(这次没有)、姜、葱、糖、盐、生抽、老抽 步骤(steps) 1 牛腩切成小块,过水。 2 姜切片,放入高压锅中,倒入牛腩与适量水,开煮 3 西红柿、土豆、洋葱切小块, 4 葱花炝锅,将所有材料倒入,放入锅中炒熟,抄时加糖、盐、生抽、番茄酱适量 3 待洋葱变透明、西红柿稀烂时,关火,倒入高压锅中,与牛肉一起炖。 4 高压锅盖盖,上汽30分钟,焖10分钟,完毕~