语音识别(Speech Recognition)

来源:Coursera吴恩达深度学习课程

现今,最令人振奋的发展之一就是seq2seq模型(sequence-to-sequence models)语音识别(speech recognition)方面准确性有了很大的提升。我们来看看seq2seq模型是如何应用于音频数据(audio data)的,比如语音(the speech)。什么是语音识别问题呢

有一个音频片段(audio clip)x,任务是自动地生成文本(transcript)y。一个音频片段,画出来是这样(横轴是时间)。一个麦克风的作用是测量出微小的气压(air pressure)变化,耳朵能够探测到这些微小的气压变化,于是我们可以听到声音,气压随着时间而变化。假如这个音频片段的内容是:"the quick brown fox"(敏捷的棕色狐狸),这时我们希望一个语音识别算法(speech recognition algorithm),通过输入这段音频,然后输出音频的文本内容。考虑到人的耳朵并不会处理声音的原始波形(row wave forms),而是通过一种特殊的物理结构来测量不同频率和强度的声波。音频数据的常见预处理步骤,就是运行这个原始的音频片段,然后生成一个声谱图(spectrogram)横轴(horizontal axis)是时间,纵轴(vertical axis)是声音的频率(frequencies),而图中不同的颜色,显示了声波能量的大小(the amount of energy),也就是在不同的时间和频率上这些声音有多大。通过这样的声谱图,伪空白输出(the false blank outputs)也应用于预处理步骤,也就是在音频被输入到学习算法之前,而人耳所做的计算和这个预处理过程非常相似。

曾经有一段时间语音识别系统是用音位(phonemes)来构建的,也就是人工设计的基本单元(hand-engineered basic units of cells),如果用音位来表示"the quick brown fox",在这里稍微简化一些,"the"含有"th"和"e"的音,而"quick"有"k" "w" "i" "k"的音,语音学家过去把这些音作为声音的基本单元写下来,把这些语音分解成这些基本的声音单元,而"brown"不是一个很正式的音位,因为它的音写起来比较复杂,不过语音学家(linguists)们认为用这些基本的音位单元(basic units of sound called phonemes)来表示音频(audio),是做语音识别最好的办法。不过在end-to-end模型中,我们发现这种音位表示法(phonemes representations)非必要,可以构建一个系统,通过向系统中输入音频片段(audio clip),然后直接输出音频的文本(a transcript),而不需要使用这种人工设计的表示方法。使用这种方法需要用一个很大的数据集,研究数据集可能长达300个小时,在学术界,甚至3000小时的文本音频数据集,都被认为是合理的大小。大量的研究,大量的论文所使用的数据集中,有几千种不同的声音,而且,最好的商业系统现在已经训练了超过1万个小时的数据,甚至10万个小时,并且它还会继续变得更大。在文本音频数据集中(Transcribe audio data sets)同时包含x和y,通过深度学习算法大大推进了语音识别的进程。那么,如何建立一个语音识别系统呢?

如上图,一种方法是结合之前的注意力模型(attention model),在输入音频的不同时间帧上(横轴),你可以用一个注意力模型,来输出文本描述,如"the quick brown fox",或者其他语音内容。

还有一种效果也不错的方法,就是用CTC损失函数(CTC cost)来做语音识别。CTC就是Connectionist Temporal Classification,它是由Alex Graves、Santiago Fernandes, Faustino Gomez、和Jürgen Schmidhuber提出的。具体可以参考论文:Connectionist temporal classification:labelling unsegmented sequence data with recurrent neural networks

算法思想如下:

假设语音片段内容是某人说:"the quick brown fox",这时我们使用一个新的网络,结构像这个样子,这里输入x和输出y的数量一样,因为这里画的只是一个简单的单向RNN结构。然而在实际中,它有可能是双向的LSTM结构,或者双向的GRU结构,并且通常是很深的模型。但注意一下这里时间步的数量,它非常地大。在语音识别中,通常输入的时间步数量(the number of input time steps)要比输出的时间步的数量(the number of output time steps)多出很多。举个例子,有一段10秒的音频,并且特征(features)是100赫兹的,即每秒有100个样本,于是这段10秒的音频片段就会有1000个输入,就是简单地用100赫兹乘上10秒。所以有1000个输入,但可能你的输出就没有1000个字母了,或者说没有1000个字符。这时要怎么办呢?CTC损失函数允许RNN生成这样的输出:ttt,这是一个特殊的字符,叫做空白符(black character),我们这里用下划线表示,这句话开头的音可表示为h_eee_ _ _,然后这里可能有个空格,我们用这个(非下划线)来表示空格,之后是_ _ _qqq__,这样的输出也被看做是正确的输出。下面这段输出对应的是"the q"。CTC损失函数的一个基本规则是将空白符之间的重复的字符折叠起来,再说清楚一些,这里用下划线来表示这个特殊的空白符(a special blank character),它和空格(the space character)是不一样的。所以the和quick之间有一个空格符,所以我们要输出一个空格,通过把用空白符所分割的重复的字符折叠起来,然后我们就可以把这段序列折叠成"the q"。这样一来你的神经网络因为有很多这种重复的字符,和很多插入在其中的空白符(blank characters),所以最后我们得到的文本会短上很多。于是这句"the quick brown fox"包括空格一共有19个字符,在这样的情况下,通过允许神经网络有重复的字符和插入空白符使得它能强制输出1000个字符,甚至你可以输出1000个y值来表示这段19个字符长的输出。这篇论文来自于Alex Grace以及刚才提到的那些人。Andrew所参与的深度语音识别系统项目就使用这种思想来构建有效的语音识别系统。

以上是语音识别的粗略的理解(rough sense),理解语音识别模型是如何工作的,注意力模型是如何工作的,以及CTC模型是如何工作的,以及这两种不同的构建这些系统的方法。现今,在生产技术中,构建一个有效语音识别系统,是一项相当重要的工作(a pretty significant effort),并且它需要很大的数据集(data set),之后的课程Andrew将告诉我们如何构建一个触发字检测系统(rigger word detection system),其中的关键字检测系统(keyword detection system)将会更加简单,它可以通过一个更简洁的数量更合理的数据来完成。

说明:记录学习笔记,如果错误欢迎指正!转载请联系我。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22512.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【爬虫】利用Python爬虫爬取小麦苗itpub博客的所有文章的连接地址(1)

【爬虫】利用Python爬虫爬取小麦苗itpub博客的所有文章的连接地址(1) 爬取结果: 火狐(Firefox)如何移除add security exception添加的网站:http://blog.itpub.net/26736162/viewspace-2286064/ 如何将网页…

【云和恩墨】内外兼修:Oracle ACED熊军谈Oracle学习

原创 2016-07-07 熊军 编辑手记:熊军是中国西部第一位,也是到目前为止唯一的Oracle ACE总监,在这篇文章中熊军描述了他的学习过程和理念供大家参考。 ORACLE 的学习,就好比武侠小说中学武功。要从三方面入手: 1、…

快跑!传说中的GPT4真的来了!多模态,吊打旧版ChatGPT!

原文:快跑!传说中的GPT4真的来了!多模态,吊打旧版ChatGPT! - 知乎 目录 牛逼!!! 对不起,我实在没忍住说出这两个字! 过了一遍资料,先说结论:GPT4这波OpenAI直接王炸!…

GPT4来了?10秒钟做一个网站

GPT4来了?10秒钟做一个网站! 好了,我可以像雪容融一样躺平了🤔 为什么雪容融都会wei gui!!🤬 言归正传,3月15日,#GPT4做一个网站只要十秒#登上热搜。 根据视频中的演…

《花雕学AI》AI时代来临,互联网教父凯文·凯利给你50条生存指南:5000天后的世界会是什么样?

你知道凯文凯利吗?他是《连线》杂志的创始人之一,被誉为“世界互联网教父”,他的预言和观点影响了无数人的思考和行动。他曾经预言过互联网、社交媒体、区块链等技术的发展和变革,而现在,他又给我们带来了一个全新的预…

雅虎正式成立 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 3 月 2 日,在 1983 年的今天,世界上首张数码音乐唱片上市,从此改变了接下来二十多年的音乐产业。从光盘存储器、可记录光盘到…

刚自愿降薪 40% 的库克,要被“踢出”苹果董事会了?

整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 没想到 2 月的尾巴,我们还没等来苹果春季发布会的音信,却听到了库克要被“踢出”苹果董事会的传闻: 据外媒 FOX Business 报道,美国国家法律和政策中心…

LangChain与大型语言模型(LLMs)应用基础教程:神奇的Agent

LangChain是大型语言模型(LLM)的应用框架,LangChain可以直接与 OpenAI 的 text-davinci-003、gpt-3.5-turbo 模型以及 Hugging Face 的各种开源语言模如 Google 的 flan-t5等模型集成。通过使用LangChain可以开发出更为强大和高效的LLM的各种应用。 今天我们就来实现一个神奇的…

一文读懂大语言模型

以ChatGPT为代表的大语言模型被很多人认为是新一轮科技革命的起点,本文旨在通过概念性介绍,让普通人能够尽可能理解人工智能以及大语言模型的基本概念,从而了解这些技术能做以及不能做什么。原文: A Very Gentle Introduction to Large Langu…

新手小白教程之 圈X-QuantumultX 某青极速版自动签到阅读

自动签到阅读功能 今天给大家带来QX的进阶玩法,实现阅读极速版的自动签到,自动阅读功能。我们今天的功能并不在重写或调试模块进行操作,直接在配置文件进行操作是最快最方便的。下面开始今天的教程。欢迎大家入群交流:868199154 …

0代码基础小白使用ChatGPT做出一款谷歌全屏截图插件的全过程

ChatGPT云炬学长 公众号:云炬网络 1 人赞同了该文章 开篇说明: 1、本次完全不懂代码,不知道什么Java、c,真正0基础开局; 2、以下是我按照时间顺序记录全过程,重点是记录使用ChatGPT的过程;…

看我用ChatGPT如何快速生成思维导图

这一节给大家分享下如何利用ChatGPT快速生成思维导图,先看效果图: 首先去ChatGPT提问题:如下图,生成MarkDown格式的内容。 把这些内容复制到支持MarkDown格式的编辑器,如果你没有这样的编辑器也没关系,你用…

用python画梵高星空-python画画梵高

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 众多的第三方库; 解释执行,不需要编译; 跨平台,方便移植;..... 两个词总结起来就是:简单、方便。 2“不务正业”的python更可怕的是,某些实用主义者将py…

AI绘画人像promt分享

Promt Checkpoint为基础模型,常用chilloutmix和majicmixRealistic 在设置好checkpoint后,即可设置promt,按照经验来说, promtBase promtDescription promtlorapositive TextureStyle promt 其中的positive Texture和lora根据需求可以从c站…

教你从头到尾利用DL学梵高作画

教你从头到尾利用DL学梵高作画 作者:七月在线开发/市场团队三人,骁哲、李伟、July。本教程主要由骁哲撰写,李伟负责Linux命令部分。 配置:GTX 1070 cuda 8.0 Ubuntu 14.04 cudnn 5.1 tensorflow gpu 时间:二零一六年九…

【AI作画】当梵高遇上东方明珠——梵高画风迁移全纪录

【AI作画】当梵高遇上东方明珠——梵高画风迁移全纪录 视频: 【AI作画】当梵高遇上东方明珠——梵高画风迁移全纪录 梵高出生于1853年3月30日荷兰乡村津德尔特的一个新教牧师家庭,早年的他做过职员和商行经纪人,还当过矿区的传教士最后他投身…

手把手教你用AI画梵高的《星空》

导读:有人说,AI会导致失业;也有人说,AI创造大量工作机会,各行各业对AI人才的需求都将日益增加。 AI在模仿人类的学习方式,那么,人类又该怎样学习AI?本文就带你了解一本学习AI的神书。…

教你从头到尾利用DL学梵高作画:GTX 1070 cuda 8.0 tensorflow gpu版

教你从头到尾利用DL学梵高作画 作者:七月在线开发/市场团队中的三人,骁哲、李伟、July。本教程主要由骁哲撰写,李伟负责Linux命令部分。时间:二零一六年九月二十五日配置:GTX 1070 cuda 8.0 Ubuntu 14.04 cudnn 5.1 te…

没GPU也能玩梵高作画:Ubuntu tensorflow CPU版

没GPU也能玩梵高作画:Ubuntu tensorflow CPU版 作者:七月在线开发/市场团队骁哲、李伟、July时间:二零一六年九月二十七日交流:TensorFlow实战交流Q群 472899334,有问题可以加此群共同交流。另探究实验背后原理&#x…

基于vgg19的梵高图像风格迁移

前言 大家好,我是阿光。 本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPy…