用于会话式AI应用的说话者自适应语音结束检测的制作方法


用于会话式ai应用的说话者自适应语音结束检测
1.相关申请的交叉引用
2.本技术要求于2021年1月29日提交的名称为“用于会话式ai应用的说话者自适应语音结束检测(speaker adaptive end of speech detection for conversational ai applications)”的美国专利申请no.17/162,907的优先权,其全部内容通过引用全文并入本文并用于所有目的。


背景技术:



3.为各种不同的目的捕获音频数据,例如提供语音控制或与各种设备的基于语音的交互。不幸的是,在捕获的音频中检测适当的语音元素可能具有挑战性,特别是对于资源有限的设备。特别是,在为各种不同目的处理捕获的音频数据时,用户在检测语音开始和语音结束时的错误可能会导致错误、不准确和延迟。以前的解决方案可能会导致语音结束检测的结果不佳和高延迟。
附图说明
4.将参考附图描述各个技术,在附图中:
5.图1示出了根据至少一个实施例的用于分析音频数据的系统;
6.图2示出了根据至少一个实施例的音频处理管线;
7.图3a和3b示出了根据至少一个实施例的语音结束检测方法;
8.图4示出了根据至少一个实施例的用于分析音频信号中的语音的过程;
9.图5示出了根据至少一个实施例的确定说话者自适应语音结束和/或语音开始阈值的过程;
10.图6示出了根据至少一个实施例的至少部分地基于说话者自适应语音结束阈值来标记语音结束的过程;
11.图7示出了根据实施例的并行处理单元(“ppu”)的示例;
12.图8示出了根据一个实施例的通用处理集(“gpc”)的示例;
13.图9示出了根据一个实施例的存储器分区单元的示例;
14.图10示出了根据一个实施例的流式多处理器的示例;
15.图11示出了根据一个实施例的可以实现各个示例的计算机系统。
16.图12示出了根据至少一个实施例的分布式系统;
17.图13示出了根据至少一个实施例的云计算环境;以及
18.图14示出了根据至少一个实施例的由云计算环境提供的一组功能抽象层。
具体实施方式
19.本公开的实施例涉及说话者自适应语音结束(eos)检测。公开了至少部分地基于特定说话者的语速来检测语音开始(sos)和eos的系统和方法。
20.与诸如上述的那些传统系统相比,至少部分地基于获得的关于特定说话者的信息
(例如,语速)动态地调整sos和eos检测减少了等待时间并提高了sos和eos检测的准确性。在本公开中,描述了至少部分地基于连接主义时序分类(ctc)的说话者自适应eos检测器自动语音识别。在各种实施例中,eos阈值指示在音频数据中检测到的要标记为eos的最小静默持续时间。在至少一个实施例中,可以指定定义用于eos检测的滑动窗口大小的eos窗口长度,以及eos阈值,当滑动窗口中的空白符号百分比达到或超过eos阈值时,该阈值可用于将转录本或时间间隔的一部分标记为eos。例如,窗口大小为500毫秒且eos阈值设置为95%,具有至少95%空白空间的特定窗口的ctc输出字符串将被eos检测器标记为eos,如下面更详细描述的那样。
21.为了确定特定说话者的eos阈值,至少部分地基于ctc的输出计算连续单词之间的间隔(例如,词间时间),如下面更详细描述的。在一个示例中,eos阈值是至少部分地基于由ctc输出的字符串作为一组词间时间的函数来计算的。当使用说话者自适应eos执行自动语音识别时,可以在估计特定说话者的语速之前捕获特定说话者说出的特定数量的单词。在一个示例中,在计算语速之前获得一组二十五个词间时间。
22.如下文更详细描述的,语速可以衡量产生单词的速度,可以通过多种方式定义,例如一组词间时间的平均值、一组词间时间的最大值、一组词间时间的最小值、词间时间的方差、一组词间时间的其他函数和/或它们的组合。在各种实施例中,一旦确定了语速,就针对特定说话者调整或以其他方式修改eos阈值。类似地,语速可用于调整或以其他方式修改sos阈值。在各种实施例中,至少部分地基于语速周期性地或非周期性地修改eos阈值和/或sos阈值。
23.一旦为特定说话者确定了eos阈值和sos阈值,在各种实施例中,eos阈值和sos阈值用于确定作为自动语音识别过程的一部分获得的音频数据的sos和eos。如下文更详细描述的,输入音频可以在被输入到ctc之前由各种组件(例如,特征提取器和神经声学模型)处理。在各种实施例中,ctc提供包含在音频输入的音频帧或时间步长中的可能字符或样本的概率分布。在一个示例中,这些字符可以包括任何适当的字母数字字符,以及潜在的一个或更多个特殊字符,例如用于表示未检测到其他字符的时间步长或音频帧的空白。在各种实施例中,为了确定由eos检测器处理的字符串,至少部分地基于ctc中指示的概率分布从可能的字符集中选择最可能的字符。
24.在一个实施例中,eos检测器确定用于滑动窗口的特定窗口的字符串内的空白符号的百分比。在一个示例中,对于字符串中的一组时间步长,eos检测器确定当前状态是语音状态(例如,当前字符表示语音)还是非语音状态(例如,当前指示空白和/或静音)。然后,eos检测器可以确定空白符号(例如,非语音状态)的百分比是否满足eos阈值。例如,如果满足eos阈值,则可以标记eos,并且如下文更详细描述的解码器生成与音频输入相关联的转录本。
25.在至少一个实施例中,音频捕获设备106的麦克风108可以捕获音频信号,其可以包括由至少一个人102发出的语音104。在各种实施例中,麦克风108包括用于将声波转换成电能变化的仪器,该电能变化随后可以被放大、传输或记录以供在下文更详细描述的各种实施例中使用。在一个示例中,麦克风108被包括作为用户102佩戴的头戴式耳机的一部分,其中麦克风108的输出作为输入提供给音频捕获设备106。在另一示例中,麦克风108是位于距用户102一定距离的音频捕获设备106的一部分(例如,集成于其中),其中,音频捕获设备
106可以包括计算设备、互联网或物联网(iot)设备、智能扬声器、移动电话、计算机或能够捕获或接收音频信号或数据的其他设备,或作为其一部分。在各种实施例中,音频捕获设备106被集成到另一个设备中,例如导航系统、车辆、安全相机或其他系统。
26.此外,音频捕获设备106可以包括联网和/或处理功能。在一个示例中,音频捕获设备106包括网络接口(例如,wifi无线电)以将数据传输到音频分析器112。在各种实施例中,音频分析器112包括可执行代码或其他指令(例如,存储在存储器中的源代码),当由计算设备的进程执行时,使计算设备执行本公开中描述的各种操作,例如至少部分地基于语音104生成转录本116。例如,音频捕获设备106包括用于执行音频分析器112或执行本公开中描述的其他操作的存储器和处理器。在又一些实施例中,音频分析器112包括由计算资源服务提供商(例如,云计算服务提供商)提供的服务。在这样的实施例中,音频分析器112由数据中心中的一个或更多个服务器(例如,使用虚拟机或容器实例)执行以执行本公开中描述的操作。在一个示例中,音频捕获设备106通过网络将一个或更多个音频信号110传输到与音频分析器112相关联的服务端点。
27.在至少一个实施例中,用户102发出的语音104可以是要被转录或以其他方式转换成用于许多适当目的中的任何目的的文本的语音。例如,语音104被转录成文本以供虚拟助理或其他应用程序使用。在另一示例中,语音104被分析并转换为可用于向至少一个语音可控设备118提供指令或请求的文本命令。在至少一个实施例中,语音可控或语音可控设备118可以包括能够采取物理动作的设备,例如车辆,或者包括能够执行与确定的语音命令或请求相对应的指令的软件的计算设备。
28.在至少一个实施例中,音频捕获设备106可以使用麦克风108捕获一个或更多个音频信号110,其可以被传递到音频分析器112。如上所述,音频分析器112可以在与音频捕获设备106相同的设备上,或者可以在单独的设备上,例如通过无线连接可用的远程设备或通过网络连接可用的远程服务器。此外,在各种实施例中,音频分析器112包括语音处理管线114,其将音频信号110作为输入,分析音频信号110并生成一个或更多个转录本116,或至少部分基于音频信号生成的其他文本,如下面更详细讨论的。在各种实施例中,语音处理管线114包括可执行代码或其他指令(例如,存储在存储器中的源代码),当由计算设备的进程执行时,使计算设备执行本公开中描述的各种操作(例如,将音频信号110作为输入,分析音频信号110,以及生成一个或更多个转录本116)。在至少一个实施例中,转录本116被提供给语音可控设备118,其可以至少部分地基于转录本116中包含的文本来执行一个或更多个动作。
29.在各种实施例中,语音可控设备118包括命令生成器120,该命令生成器120可以分析包括在转录本116中的文本并至少部分地基于可由语音可控设备118的控制器122(或其他应用程序或组件)执行的文本来生成命令。在各种实施例中,命令生成器120和控制器122包括可执行代码或其他指令(例如,存储在存储器中的源代码),当由计算设备(例如,语音可控设备118)的进程执行时,使计算设备执行本公开中描述的各种操作,例如至少部分地基于转录本116生成命令并且使计算设备执行该命令。例如,提供命令以调整设备、机器人或车辆的操作。在另一示例中,提供该命令以例如通过搜索引擎、数据库查询或应用程序的其他操作返回信息。在又一些实施例中,转录本116被存储以供后续使用或分析(例如,将转录本116存储在数据库中)。如上所述,语音可控设备118可以与音频分析器112集成在同一
设备内,并且还可以包括音频捕获设备106,或者可替代地可以在能够通过至少一个有线或无线连接与本公开中描述的其他组件进行通信的单独设备上。在一个示例中,语音可控设备118向计算资源服务提供商的服务注册,以通过网络从音频分析器112(实现为计算资源服务提供商的服务)接收转录本116。
30.在至少一个实施例中,语音处理管线114包括各种组件(例如,执行源代码的软件和/或硬件组件),例如下面结合图2更详细描述的那些。在各种实施例中,语音处理管线114至少部分地基于音频信号110来确定用户102的语速。如下文更详细描述的,在一个实施例中,语音处理管线114利用一旦确定了足够数量的词间时间就至少部分地基于用户102的语速来修改的语音结束(eos)阈值。如下文更详细描述的,语音处理管线114可以使用连接主义时序分类(ctc)函数或其他算法来生成表示在音频信号110中捕获的语音104的字符串。在一个实施例中,语音处理管线114然后至少部分地基于包括在字符串中的空白字符来确定一组词间间隔(例如,语音104中说出的词之间的时间)。该组词间间隔然后可以用作函数的输入以修改和/或替换eos阈值。如下文更详细描述的,在一个实施例中,eos阈值被eos检测器用来标记eos信号,表明可以生成和/或提供转录本116到语音可控设备118。
31.图2示出了一个实施例,其中由麦克风捕获或以其他方式获得的输入音频202作为输入提供给语音处理管线200以生成转录本214。例如,输入音频202由音频捕获设备106捕获,如上面结合图1所描述的。在各种实施例中,语音处理管线200及其组件(例如,特征提取器204、神经声学模型、ctc、eoc检测器210和解码器212)包括可执行代码或其他指令(例如,存储在存储器中的源代码),当由计算设备(例如,如以上结合图1描述的音频捕获设备106)的进程执行时,使计算设备执行下面更详细描述的各种操作。此外,如上所述,转录本可以包括适合由结合图1描述的语音可控设备118使用的文本或其他信息。
32.图2所示的组件可以在单个计算设备或更多个计算设备上执行,包括如本公开中描述的云计算设备。例如,本地设备(例如,手机、智能扬声器、智能电视或其他能够捕获音频的设备)捕获输入音频202并将输入音频202提供给语音识别管线200,该管线作为计算资源服务提供商的服务执行,如下面更详细描述的。通常,图2中所示的组件可以由计算设备、云计算设备或它们的组合来执行。通常,这里描述的操作可以根据不同的实施例以不同的方式在一组设备之间分配性能。
33.在一个实施例中,输入音频202被提供给特征提取器204。在各种实施例中,特征提取器204包括至少一个神经网络,该神经网络被训练以接受输入音频202作为代表输入音频202的内容的输入和输出特征,例如可以与在输入音频202的一个或更多个音频帧中识别的一个或更多个模式相对应。在一个示例中,特征提取器204包括经过训练以从输入音频202中提取特征的深度卷积神经网络(cnn)。在至少一个实施例中,特征提取器204可以执行诸如信号归一化、窗口化和音频特征谱图(例如梅尔谱图)的生成之类的任务。
34.在至少一个实施例中,可以将输入音频202的给定音频帧的频域中的一组特征(例如,由梅尔谱图表示)传递给神经声学模型206或对自动语音识别有用的其他模型。例如,神经声学模型206可以生成接收的音频信号(例如,输入音频2020)与音素或构成语音的其他语言单元之间的关系的表示。此外,在各种实施例中,神经声学模型206至少部分地通过学习创建构成单个单词的声音的统计表示来训练。
35.在至少一个实施例中,神经声学模型206的输出被提供给连接主义时序分类(ctc)
函数208,给定这些提取的音频特征,为包含在输入音频202的特定音频帧或时间步长中的可能字符或样本提供概率分布。在各种实施例中,由神经声学模型206输出的字符包括任何适当的字母数字字符(例如,a-z),以及可能的一个或更多个特殊字符,例如用于表示没有检测到其他字符的时间步长或音频帧的空白。换言之,在一个实施例中,空白字符表示未检测到语音的时间步或音频帧(例如,说话者是沉默的,例如单词之间的停顿)。在至少一个实施例中,神经声学模型206可以是任何适当的声学模型,例如来自nvidia corporation的jasper模型或其他深度卷积神经网络(cnn)。例如,jasper网络可用于自动语音识别(asr)管线(例如,语音处理管线200),该管线包括由一系列卷积层、批量归一化、relu和dropout层组成的深度cnn。
36.为了诸如语音识别之类的任务的训练目的,在至少一个实施例中,将音频剪辑的数据集和相应的转录本提供给图2中描述的语音处理管线200。然而,在一些实施例中,语音处理管线200在音频剪辑和转录本之间没有对齐(例如,没有训练数据)的情况下被执行。在至少一个实施例中,至少部分由于缺乏对齐数据,这样的数据集会使训练基于dnn的语音识别模型变得困难。然而,在各种实施例中,连接主义时序分类(ctc)函数208可用于尝试弥补对齐数据的这种不足。例如,给定音频序列x[x1,x2,...x
t
]和转录序列y[y1,y2,...y
t
],ctc函数208可以与来自神经声学模型206的输出一起使用以获得该音频序列和转录序列之间的准确映射。在至少一个实施例中,给定音频帧xi的ctc函数208提供所有yi值的概率分布。在各种实施例中,由ctc函数208为输入音频202的每个音频帧输出的概率分布作为输入提供给解码器212以用于产生转录本214。此外,在至少一个实施例中,每个音频帧的该概率分布也作为输入提供给语音结束(eos)检测器210,其可以将特定时间步或音频帧标记为eos。
[0037]
在至少一个实施例中,eos检测器210可用于检测语音开始(sos)和eos段,用于基于ctc函数208的输出的自动语音识别(asr)模型的输出。在一个实施例中,ctc函数208利用定义数量的字符(例如,29个字符),其中这些字符包括该英语语言(和/或其他语言的数字或其他字符)的26个字符和一组其他字符,每个字符表示不同的语法和/或功能方面,例如用于单词分隔的空格字符、撇号符号和用于指示对于给定音频帧未检测到其他字符的空白符号。如上所述,空白符号可以表示静音,并且可以使用空白字符的概率来进行eos检测。在至少一个实施例中,eos检测器210可以与ctc函数208集成,使得语音处理管线200不需要附加的组件。
[0038]
在各种实施例中,eos检测器210或语音处理管线200的其他组件基于所确定的说话者的语速来确定或以其他方式修改eos阈值。可以至少部分地基于输入音频202和/或提供给语音处理管线200的多个不同音频信号来确定语速。此外,在一个实施例中,语音处理管线200包括初始eos阈值。在一个示例中,在可以确定特定说话者的语速之前,对于大小为x(例如,500毫秒)的滑动窗口,将eos阈值设置为(例如但不限于)500个空白字符(从ctc函数208获得)。在其他示例中,eos阈值被描述为大小为x的滑动窗口上空白字符的百分比(例如,90%)。
[0039]
在各种实施例中,一旦已经计算出足够数量的词间间隔,则至少部分地基于词间间隔的值来修改eos阈值。在一个实施例中,词间间隔的数量是固定的(例如,需要25个词间间隔来计算eos阈值)。在又一些实施例中,在修改或生成新的eos阈值之前所需的词间间隔的数量是动态确定的。例如,如果由一组词间间隔表示的语速是一致的(例如,词间间隔之
间的差异很小),则在达到上述固定值之前修改eos阈值。类似地,如果存在高方差,则可以收集超出上述固定值的附加的词间间隔。
[0040]
在各种实施例中,一旦获得了足够的一组词间间隔(例如,至少部分地基于ctc函数208的输出),就可以修改初始eos阈值或者可以生成新的eos阈值。在一个示例中,eos阈值被设置为一组词间间隔的最大值(例如,口语单词之间的最长时间量)。此外,在各种实施例中,eos阈值被确定为一组词间间隔的函数。例如,可以至少部分地基于该一组词间间隔的值的均值、方差、众数或其他函数来计算eos阈值。在至少一个实施例中,使用这些值的算法可以由下式给出:
[0041][0042]
图3a和3b示出了语音处理管线300的一部分,其中eos检测器306的各种组件处理ctc函数304的输出。在至少一个实施例中,eos检测器306包括贪心解码器308和组件310,以确定(例如,标记)语音开始(sos)和/或语音结束(eos)。如上面结合图2所描述的,声学模型输出302作为输入提供给ctc函数304,ctc函数304又输出每个时间步长的可能字符的概率分布。例如,ctc函数304的输出包括描述为n x1x c的概率分布,其中n是时间步长的数量,c是词汇表中的条目数量。在至少一个实施例中,由ctc函数304生成的概率分布数据作为输入提供给贪心解码器308。在一个实施例中,贪心解码器308至少部分地基于概率分布(例如,1xc)从一组可能的字符(例如,在概率分布数据中指示的字符)中选择最可能的字符。在一个示例中,将argmax解码器应用于每个时间步长,使得贪心解码器308的输出将是一串n个字符,其中所选字符具有如概率分布数据中所指示的最高概率。在至少一个实施例中,贪心解码器308的输出350(例如,argmax函数)在图3b中示出,其中该输出包括字符串,该字符串包括由图3a和3b的下划线表示的字母数字字符和空白符号。
[0043]
在至少一个实施例中,至少部分地基于ctc函数304的输出,图3a和3b中所示的字符串(例如,输出350)与对应的音频输入在时间上对齐。如图3a所示,在一个实施例中,将字
符串作为输入提供给组件310以确定eos和/或sos。例如,如果为输出350确定了eos或sos,则如上所述,eos检测器306为语音识别管线的解码器标记时间步长,指示可以生成转录本。在至少一个实施例中,组件310还可以计算语音开始(sos)值或时间。例如,eos检测器306的输出包括输入音频信号的给定语音片段的开始时间和结束时间。在各种实施例中,段(例如,eos段)包括音频信号的各个部分,包括时间步长、音频帧、滑动窗口或音频信号的其他逻辑或物理部分。
[0044]
在至少一个实施例中,eos和/或sos的检测是使用贪婪解码器308的输出350上的滑动窗口352来执行的。例如,滑动窗口352包括多个时间步长x(例如,25),其中每个时间步长代表时间间隔(例如,20毫秒)。如上所述,可以至少部分地基于对于任何时间步长和/或时间步长范围包括在滑动窗口352内的空白符号(在图3a和3b中示为下划线)的百分比来确定eos。在一个示例中,可以将每个时间步长分类为语音或非语音(例如,如以上结合图2描述的算法中所指示的),其中空白符号表示一段非语音。此外,在该示例中,分类为语音的时间步长可以具有分配以指示该时间步长的语音的另一个非空白符号(例如,字母数字字符)。在一个实施例中,ctc函数304为每个时间步返回最可能的字符。
[0045]
如图3b所示,在一个实施例中,词间间隔354包括由字母数字字符之间的空白符号表示的多个时间步长或音频帧。在至少一个实施例中,可以使用单独的窗口长度和阈值(例如,eos阈值和sos阈值)来提供对片段检测的更精细控制,包括sos和eos两者的确定。例如,如果滑动窗口内的空白符号百分比低于sos阈值,则可以使用各种参数来指定可以标记sos,例如sos窗口长度、指定用于语音检测开始的滑动窗口大小以及sos阈值。
[0046]
在另一个示例中,可以指定定义用于eos检测的滑动窗口大小的eos窗口长度,以及当该滑动窗口中的空白符号的百分比达到或超过该eos阈值时可用于标记eos的eos阈值。在各种实施例中,至少部分地基于一组词间间隔,将eos窗口大小设置为500毫秒并且将eos阈值设置为95%。此外,在一个实施例中,该组词间间隔用于修改sos滑动窗口大小、sos阈值、eos滑动窗口大小和eos阈值。以这种方式,eos检测器306可以允许更严格的语音开始阈值,以确保没有漏掉语音,并且对于语音结束,其中包括额外的非语音可能不那么重要,并导致延迟为用户生成响应。在至少一个实施例中,使用这些值的算法可以由下式给出:
[0047][0048]
此外,在各种实施例中,可以训练声学模型以将噪声检测为无声或非语音,以改进eos检测。在一个示例中,这可以包括生成包含不同类型和级别的噪声的训练数据,使得字符概率检测在存在不同类型的噪声(例如,道路噪音、背景对话、建筑、风或其他形式的声音,不是由说话者说话的行为直接产生的)时更加准确。在至少一个实施例中,这可以包括将不同类型和级别的噪声与干净的音频信号混合以生成训练数据。在这样的实施例中,在训练期间使用ctc函数304来将音频文件与其转录本对齐。此外,在各种实施例中,ctc函数304的输出被解码以生成最终转录本。
[0049]
此外,本公开中描述的语音识别管线对于具有挑战性的声学条件可以是鲁棒的。例如,语音识别管线可以处理包括低增益和嘈杂环境在内的极端情况。在各种实施例中,语音识别管线使用简单且计算效率高的算法,对于eos检测器几乎没有额外成本,因为这样的检测器可以利用神经声学模型和ctc函数304的输出,这可能已经存在于语音识别管线300中。结果,在各种实施例中,eos阈值被周期性地或非周期性地重新计算。在一个示例中,连续计算一组词间间隔,并且对于每25个词间间隔,重新计算和/或更新eos阈值。在至少一个实施例中,eos检测器可以利用神经声学模型,该神经声学模型根据目标环境得到训练,例如在家庭、汽车、办公室或零售机构中。
[0050]
现在参考图4、5和6,这里描述的方法400、500和600的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。每个方法还可以体现为存储在计算机存储介质上的计算机可用指令。这些方法可以由独立应用程序、服务或托管服务(独立或与另一个托管服务组合)或另一个应用程序或服务的插件提供,仅举几例。此外,作为示例,关于图2的语音识别管线描述了方法400。然而,这些方法可以附加地或替代地由任何一个系统或系统的任何组合执行,包括但不限于本文所述的那些。此外,图4、5和6中描述的方法的操作可以被省略、以不同的顺序执行、并行执行或以串行和并行的组合方式执行。通常,下文结合图4、5和6描述的操作可以由通过网络或其他通信信道通信的单个设备或更多个设备来执行。
[0051]
图4示出了根据本公开的各种实施例的用于确定音频信号中语音片段的结束的方法400。如上所述,在一个实施例中,方法400由上面结合图1描述的音频捕获设备106执行。在其他实施例中,其他设备(例如,云计算资源、虚拟机、虚拟处理器、边缘计算设备等)执行下面描述的所有或一些操作。例如,音频捕获设备记录音频信号并将音频信号或其一部分(例如,音频信号的下采样或其他处理版本)传输到云计算设备、虚拟机或进程、或边缘计算设备等,以执行上述全部或部分操作。
[0052]
在框402,方法400包括捕获音频信号。在一个实施例中,使用麦克风(例如,音频捕获设备的)捕获音频信号以捕获代表人类语音的音频信号。例如,智能扬声器响应唤醒词捕获音频信号并将捕获的音频信号传输到由计算资源服务提供商实施的语音处理服务。在框404,从音频信号中提取一组音频特征。例如,特征包括频谱。在框406,使用训练的声学模型和连接主义时序分类(ctc)函数分析从音频信号中提取的特征,以确定该音频信号的各个帧或时间步长的字符概率。在框408,使用一个或更多个语音标准分析由ctc函数输出的字符概率,以计算包含在该音频信号内的一个或更多个语音片段的开始时间和/或结束时间。在至少一个实施例中,这可以使用语音结束(eos)检测器来执行,该检测器使用语音标准,包括滑动窗口的长度和/或在滑动窗口内预测的空白字符的百分比,以确定语音的开始和结束。此外,在各种实施例中,窗口大小和百分比阈值对于开始和结束时间计算可以不同。在框410中,解码器可用于将开始时间和结束时间之间的字符概率转换为对应语音片段的转录本。在至少一个实施例中,然后可以将这些转录本存储或提供给预期的接收者,例如能够对包含在给定语音片段中的命令进行操作的语音控制设备。在一个实施例中,框404到410由计算资源服务提供者实现的语音处理服务执行。
[0053]
图5是示出根据本公开的一些实施例的用于至少部分地基于特定说话者的语速来确定语音结束(eos)阈值的方法500的流程图。在一个实施例中,方法500由如本公开中描述
的音频捕获设备执行。在又一些实施例中,方法500作为由计算资源服务提供商实现的语音处理服务的组件来执行。例如,计算资源服务提供商的服务使用方法500确定eos阈值,并提供和/或更新音频捕获设备的eos阈值以使音频捕获设备能够提高性能和eos的检测。返回到图5,方法500在框502包括获得字符串。在各种实施例中,连接主义时序分类(ctc)函数至少部分地基于声学模型的输出生成字符的概率分布作为输出。例如,如上所述,在给定音频信号的每个时间步长的输入特征的情况下,ctc函数为每个时间步长输出可能字符的概率分布。此外,如上所述,语音识别管线的组件(例如,贪心解码器)可以利用算法来至少部分地基于由ctc输出的概率分布来生成字符串。
[0054]
在框504中,执行方法500的系统至少部分地基于字符串来确定一组中间词。在各种实施例中,字符包括预定义的字母表,其中下划线或其他符号表示没有语音的音频信号的一部分。换言之,由空白符号表示的给定时间步长的音频信号可以包括声音(例如,背景噪声),但不包括语音声音(例如,口语)。在一个实施例中,将由ctc输出的一串字母数字字符表示的单词之间的多个连续空白符号计算为词间间隔。如上所述,在一个实施例中,在确定eos阈值之前收集多个词间间隔(例如,25个)。然而,在其他实施例中,一旦确定了第一词间间隔,就可以确定eos阈值。在这样的实施例中,eos阈值可以通过随后的词间间隔来修改。
[0055]
在框506中,执行方法500的系统至少部分地基于一组词间间隔来确定eos阈值。在各种实施例中,eos阈值是一组词间间隔的值的函数。在一个示例中,eos阈值被设置为一组词间间隔的平均值。在又一示例中,eos阈值被设置为该组词间间隔的最大值。一旦确定了eos阈值,在各种实施例中,语音处理管线将初始eos替换为由执行方法500的系统确定的eos。在各种实施例中,方法500用于确定语音开始(sos)阈值。
[0056]
图6是示出根据本公开的一些实施例的用于至少部分地基于特定说话者的语速来确定语音结束(eos)的方法600的流程图。在各种实施例中,使用如上所述的方法500来确定eos阈值。在一个实施例中,方法600由如本公开中描述的音频捕获设备执行。在又一实施例中,方法600作为由计算资源服务提供商实现的语音处理服务的组件来执行。例如,方法600由作为由计算资源服务提供者使用云计算设备实现的语音处理管线的组件执行的eos检测器(例如,上面更详细描述的eos检测器210)来执行。
[0057]
在框602,方法600包括获得字符串。在各种实施例中,连接主义时序分类(ctc)函数至少部分地基于声学模型的输出生成字符的概率分布作为输出。例如,如上所述,在给定音频信号的每个时间步长的输入特征的情况下,ctc函数为每个时间步长输出可能字符的概率分布。此外,如上所述,语音识别管线的组件(例如,贪心解码器)可以利用算法来至少部分地基于由ctc输出的概率分布来生成字符串。
[0058]
在框604,执行方法600的系统评估第一滑动窗口。如上所述,滑动窗口可以包括多个时间步或音频帧。在一个示例中,500毫秒的滑动窗口包括二十五个时间步长,每个时间步长具有20毫秒的持续时间。滑动窗口的各种不同长度可以与方法600结合使用。此外,在一个实施例中,滑动窗口与字符串中的字符集相对应。例如,如以上结合图3所述,滑动窗口352包括字符串的子字符串。在各种实施例中,滑动窗口从时间0(例如,第一时间步长)开始并且包括一组连续的时间步长或音频帧(例如,从时间0到时间x)。
[0059]
在步骤606,执行方法600的系统确定第一滑动窗口内空白符号的百分比。在一个
实施例中,空白符号的百分比通过将滑动窗口中的空白符号的数量除以滑动窗口中的符号的总数来确定。在其他实施例中,例如在滑动窗口大小不改变的情况下,空白符号的百分比通过将空白符号的数量除以滑动窗口的长度(例如,时间步长或音频帧的数量)来确定。
[0060]
在框608中,执行方法600的系统至少部分地基于在框606中确定的空白符号的百分比来确定是否已经满足eos阈值。例如,如果第一滑动窗口的空白符号的百分比是95%并且eos阈值是90%,则执行方法600的系统继续到框610。在框610,执行方法600的系统将滑动窗口标记为eos。如上所述,将特定滑动窗口标记为eos可以触发语音处理管线的组件以生成转录本以供另一应用程序和/或设备使用。然而,返回到框608,如果执行方法600的系统确定不满足eos阈值,则方法600返回到框604并进行到下一个滑动窗口。在一个实施例中,执行方法600的系统将滑动窗口增加单个时间步长或音频帧。例如,如果当前滑动窗口是从时间步长0到时间步长25,则将滑动窗口修改为从时间步长1到时间步长26。在各种实施例中,也可以修改滑动窗口移动的时间步长或音频帧的数量。
[0061]
图7示出了根据一个实施例的并行处理单元(“ppu”)700。在实施例中,ppu 700配置有机器可读代码,如果机器可读代码由ppu执行,则使得ppu执行本公开通篇描述的一些或全部过程和技术。在一个实施例中,ppu 700是多线程处理器,其在一个或更多个集成电路设备上实现,并且将多线程利用为设计成在多个线程上并行处理计算机可读指令(也称为机器可读指令或简称为指令)的等待时间隐藏技术(latency-hiding technique)。在实施例中,线程指的是执行的线程并且是被配置为由ppu 700执行的指令集的实例化。在实施例中,ppu 700是图形处理单元(“gpu”),该图形处理单元被配置成用于实现图形渲染管线,该图形渲染管线用于处理三维(“3d”)图形数据以便生成二维(“2d”)图像数据以便在显示设备(如液晶显示器(lcd)设备)上显示。在实施例中,ppu 700被用于执行计算,诸如线性代数运算和机器学习运算。图7示出仅用于说明性目的的示例并行处理器,并且应被解释为在本公开的范围内设想的处理器架构的非限制性示例,并且可采用任何合适的处理器来补充和/或替代它们。
[0062]
在一个实施例中,一个或更多个ppu被配置成用于加速高性能计算(“hpc”)、数据中心和机器学习应用。在实施例中,ppu 700被配置为加速深度学习系统和应用,包括以下非限制性示例:自主车辆平台、深度学习、高精度语音、图像、文本识别系统、智能视频分析、分子模拟、药物发现、疾病诊断、天气预测、大数据分析、天文学、分子动力学模拟、金融建模、机器人、工厂自动化、实时语言翻译、在线搜索优化和个性化用户推荐等。
[0063]
在一个实施例中,ppu 700包括输入/输出(“i/o”)单元706、前端单元710、调度器单元712、工作分发单元714、集线器716、纵横式交换矩阵(crossbar,“xbar”)720、一个或更多个通用处理集(“gpc”)718、以及一个或更多个分区单元722。在一个实施例中,ppu 700经由一个或更多个高速gpu互连708连接到主机处理器或其他ppu 700。在实施例中,ppu 700经由互连702连接到主机处理器或其他外围设备。在一个实施例中,ppu 700连接到包括一个或更多个存储器设备704的本地存储器。在一个实施例中,本地存储器包括一个或更多个动态随机存取存储器(“dram”)设备。在实施例中,一个或更多个dram设备被配置和/或可配置为高带宽存储器(“hbm”)子系统,其中多个dram管芯堆叠在每个设备内。
[0064]
高速gpu互连708可以指基于导线的多通道通信链路,该通信链路由系统用于缩放并且包括与一个或更多个cpu组合的一个或更多个ppu 700、支持ppu 700与cpu之间的高速
缓存一致性以及cpu主控。在一个实施例中,数据和/或命令由高速gpu互连708通过集线器716传输到ppu 700的其他单元/从ppu 700的其他单元传输,所述其他单元诸如一个或更多个复制引擎、视频编码器、视频解码器、功率管理单元以及在图7中可能未明确示出的其他组件。
[0065]
在实施例中,i/o单元706被配置成用于通过系统总线702从主机处理器(图7中未示出)发送和接收通信(例如,命令、数据)。在一个实施例中,i/o单元706直接经由系统总线702或通过诸如存储器桥的一个或更多个中间设备与主机处理器通信。在一个实施例中,i/o单元706可经由系统总线702与一个或更多个其他处理器(诸如一个或更多个ppu 700)通信。在实施例中,i/o单元706实现外围组件互连高速(“pcie”)接口以用于通过pcie总线进行通信。在实施例中,i/o单元706实现用于与外部设备通信的接口。
[0066]
在实施例中,i/o单元706对经由系统总线702接收的分组进行解码。在实施例中,至少一些分组表示被配置为使ppu 700执行各种操作的命令。在实施例中,i/o单元706将经解码的命令发送到ppu 700的如由命令指定的不同其他单元。在实施例中,命令被发送到前端单元710和/或发送到集线器716或ppu 700的其他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、功率管理单元等(图7中未明确示出)。在实施例中,i/o单元706被配置成在ppu 700的不同逻辑单元之间和之中路由通信。
[0067]
在实施例中,由主机处理器执行的程序将命令流编码在向ppu 700提供工作负荷以供处理的缓冲器中。在实施例中,工作负荷包括指令和要由那些指令处理的数据。在实施例中,缓冲器是可由主机处理器和ppu 700访问(例如,读/写)的存储器中的区域
‑‑
主机接口单元可以被配置为经由通过i/o单元706在系统总线702上传输的存储器请求来访问连接到系统总线702的系统存储器中的缓冲器。在实施例中,主机处理器将命令流写入到缓冲器,且接着将指向命令流的开始的指针发送到ppu 700,使得前端单元710接收指向一个或更多个命令流的指针且管理所述一个或更多个流,从所述流读取命令且将命令转发到ppu 700的不同单元。
[0068]
在一个实施例中,前端单元710耦合至调度器单元712,该调度器单元配置各种gpc 718以处理由该一个或更多个流定义的任务。在实施例中,调度器单元712被配置为跟踪与由调度器单元712管理的各个任务相关的状态信息,其中,状态信息可以指示任务被指派给哪个gpc 718、任务是活动的还是不活动的、与任务相关联的优先级级别等。在实施例中,调度器单元712管理一个或更多个gpc 718上的多个任务的执行。
[0069]
在实施例中,调度器单元712耦合至工作分发单元714,该工作分发单元被配置成用于分派任务以便在gpc 718上执行。在实施例中,工作分发单元714跟踪从调度器单元712接收的多个被调度的任务,并且工作分发单元714为每个gpc 718管理待决任务池和活动任务池。在一个实施例中,待决任务池包括多个槽(例如,32个槽),槽包含被指派以由特定gpc 718处理的任务;活动任务池可以包括用于由gpc 718活动地处理的任务的多个槽(例如,4个槽),使得当gpc 718完成任务的执行时,该任务从针对gpc 718的活动任务池中逐出,并且来自待决任务池的其他任务之一被选择和调度以在gpc 718上执行。在实施例中,如果活动的任务在gpc 718上是空闲的,诸如当等待数据依赖性被解析时,则活动的任务从gpc 718逐出并返回到待决任务池,同时待决任务池中的另一任务被选择和调度以在gpc 718上执行。
[0070]
在一个实施例中,工作分发单元714经由xbar 720与一个或更多个gpc 718通信。在实施例中,xbar 720是将ppu 700的许多单元耦合到ppu 700的其他单元的互连网络,并且可以被配置为将工作分发单元714耦合到特定gpc 718。尽管未明确示出,ppu 700的一个或更多个其他单元也可以经由集线器716连接到xbar 720。
[0071]
任务由调度器单元712管理并且由工作分发单元714分派给gpc 718。gpc 718被配置为处理该任务并产生结果。结果可以由gpc 718内的其他任务消费,经由xbar 720路由到不同的gpc 718,或者存储在存储器704中。结果可以经由分区单元722被写入存储器704,分区单元722实现用于向/从存储器704读取和写入数据的存储器接口。结果可以经由高速gpu互连708传输到另一ppu或cpu。在实施例中,ppu 700包括数量u的分区单元722,该数量等于耦合到ppu 700的单独且不同的存储器设备704的数量。下面将结合图9更详细地描述分区单元722。
[0072]
在一个实施例中,主机处理器执行驱动器内核,该驱动器内核实现应用编程接口(“api”),该api使得在主机处理器上执行的一个或更多个应用能够调度用于在ppu 700上执行的操作。在实施例中,多个计算应用由ppu 700同时执行,并且ppu 700为多个计算应用提供隔离、服务质量(“qos”)和独立地址空间。在一个实施例中,应用生成使得驱动器内核生成一个或更多个任务以供ppu 700执行的指令(例如,api调用的形式),并且驱动器内核将任务输出到正被ppu 700处理的一个或更多个流。在实施例中,每个任务包括一组或多组相关线程,其可被称为线程束(warp)。在实施例中,线程束包括可以并行执行的多个相关线程(例如,32个线程)。在实施例中,协作线程可以指多个线程,所述多个线程包括用于执行任务并且通过共享存储器交换数据的指令。根据以下的一个实施例,结合图10更详细地描述线程和协作线程。
[0073]
图8示出了根据一个实施例的gpc 800,如图7的ppu 700所示出的gpc。在一个实施例中,每个gpc 800包括用于处理任务的多个硬件单元,并且每个gpc 800包括管线管理器802、预光栅操作单元(“prop”)804、光栅引擎808、工作分发纵横式交换矩阵(“wdx”)816、存储器管理单元(“mmu”)818、一个或更多个数据处理集(“dpc”)806和任何适合的部件组合。应当理解,图8的gpc 800可以包括代替图8所示的单元或作为以下所示的单元附加的其他硬件单元。
[0074]
在实施例中,gpc 800的操作由管线管理器802控制。管线管理器802管理一个或更多个dpc 806的配置,用于处理分配给gpc 800的任务。在一个实施例中,管线管理器802配置一个或更多个dpc 806中的至少一个以实现图形渲染管线的至少一部分。在实施例中,dpc 806被配置成用于在可编程流式多处理器(“sm”)814上执行顶点着器程序。在实施例中,管线管理器802被配置成将从工作分发接收的分组路由到gpc 800内的适当逻辑单元,并且一些分组可被路由到prop 804和/或光栅引擎808中的固定功能硬件单元,而其他分组可被路由到dpc 806以供基元引擎812或sm 814处理。在一个实施例中,管线管理器802配置一个或更多个dpc 806中的至少一个以实现神经网络模型和/或计算管线。
[0075]
在实施例中,prop单元804被配置成用于将由光栅引擎808和dpc 806生成的数据路由到存储器分区单元中的光栅操作(“rop”)单元,如上文更详细描述的。在实施例中,prop单元804被配置成执行用于彩混合的优化、组织像素数据、执行地址转换等。在实施例中,光栅引擎808包括被配置成执行不同光栅操作的多个固定功能硬件单元,并且光栅引
擎808包括设置引擎、粗光栅引擎、剔除引擎、裁剪引擎、细光栅引擎、瓦片合并引擎及其任何合适的组合。在实施例中,设置引擎接收经变换的顶点并且生成与由顶点定义的几何图元相关联的平面方程;平面方程被传输到粗光栅引擎以生成图元的覆盖信息(例如,瓦片的x、y覆盖掩码);将所述粗光栅引擎的输出传输到所述剔除引擎,在所述剔除引擎中,剔除与z测试失败的图元相关联的片段,且将粗光栅引擎的输出传输到裁剪引擎,在所述裁剪引擎中,裁剪位于视锥外部的片段。在实施例中,将幸免于裁剪和剔除的片段传递到细光栅引擎,以基于由设置引擎生成的平面方程来生成像素片段的属性。在实施例中,光栅引擎808的输出包括将由任何合适的实体(诸如,由在dpc 806内实施的片段着器)处理的片段。
[0076]
在一个实施例中,包括在gpc 800中的每个dpc 806包括m-管线控制器(“mpc”)810;基元引擎812;一个或更多个sm 814;及其任何合适的组合。在实施例中,mpc 810控制dpc 806的操作,将从管线管理器802接收的分组路由到dpc 806中的适当单元。在实施例中,将与顶点相关联的分组路由到基元引擎812,基元引擎812经配置以从存储器提取与顶点相关联的顶点属性;相比之下,可将与着器程序相关联的分组发送到sm 814。
[0077]
在实施例中,sm 814包括可编程流式处理器,该可编程流式处理器被配置为处理由多个线程表示的任务。在实施例中,sm 814是多线程的,并且被配置为并发地执行来自特定线程组的多个线程(例如,32个线程),并且实现simd(单指令多数据)架构,其中,线程组(例如,线程束)中的每个线程被配置为基于相同的指令集来处理不同的数据集。在实施例中,线程组中的所有线程执行相同指令。在实施例中,sm 814实现simt(单指令,多线程)架构,其中线程组中的每个线程被配置成基于相同的指令集来处理不同的数据集,但是其中允许线程组中的各个线程在执行期间发散。在实施例中,为每个线程束维护程序计数器、调用栈和执行状态,从而在线程束内的线程发散时实现线程束和线程束内的串行执行之间的并发性。在另一个实施例中,为每个单独的线程维护程序计数器、调用栈和执行状态,从而在所有线程之间、线程束之内和线程束之间实现相等的并发性。在实施例中,为每个单独的线程维护执行状态,并且为了更好的效率,可以收敛和并行执行执行相同指令的线程。在实施例中,下文更详细地描述sm 814。
[0078]
在实施例中,mmu 818提供gpc 800与存储器分区单元之间的接口,且mmu 818提供虚拟地址到物理地址的转换、存储器保护和存储器请求的仲裁。在一个实施例中,mmu 818提供一个或更多个转换后备缓冲器(“tlb”)用于执行虚拟地址到存储器中的物理地址的转换。
[0079]
图9示出了根据一个实施例的ppu的存储器分区单元。在实施例中,存储器分区单元900包括光栅操作(“rop”)单元902;二级(“l2”)高速缓存904;存储器接口906;和其任何合适的组合。存储器接口906耦合到存储器。存储器接口906可以实现32、64、128、1024位数据总线等,以用于高速数据传输。在实施例中,ppu包括u个存储器接口906,每对分区单元900一个存储器接口906,其中每对分区单元900连接到对应的存储器设备。例如,ppu可以连接至多达y个存储器设备,诸如高带宽存储器堆栈或图形双倍数据速率、版本5、同步动态随机存取存储器(“gddr5sdram”)。
[0080]
在实施例中,存储器接口906实现hbm2存储器接口并且y等于u的一半。在实施例中,hbm2存储器堆栈位于与ppu相同的物理封装上,与常规gddr5 sdram系统相比提供了显著的功率和面积节省。在实施例中,每个hbm2堆栈包括四个存储器管芯,并且y等于4,hbm2
堆栈包括每管芯两个128位通道,总共8个通道和1024位的数据总线宽度。
[0081]
在实施例中,存储器支持单错误校正双错误检测(“secded”)错误校正码(“ecc”)以保护数据。ecc为对数据损坏敏感的计算应用提供更高的可靠性。可靠性在其中ppu处理非常大的数据集和/或在延长的时间段内运行应用的大规模集计算环境中尤其重要。
[0082]
在实施例中,ppu实现多级存储器分层结构。在实施例中,存储器分区单元900支持统一存储器来为cpu和ppu存储器提供单个统一虚拟地址空间,从而实现虚拟存储器系统之间的数据共享。在实施例中,跟踪ppu对位于其他处理器上的存储器的访问频率,以确保将存储器页面移动到更频繁地访问该页面的ppu的物理存储器。在实施例中,高速gpu互连2618支持允许ppu直接访问cpu的页表的地址转换服务,并且提供由ppu对cpu存储器的完全访问。
[0083]
在实施例中,复制引擎在多个ppu之间或在ppu与cpu之间传输数据。在实施例中,复制引擎可生成未被映射到页表中的地址的页错误,并且存储器分区单元900接着对页错误进行维护,将地址映射到页表中,之后复制引擎执行传输。在实施例中,存储器被固定(即,不可分页)用于多个处理器之间的多个复制引擎操作,从而大大减少了可用存储器。在实施例中,在硬件页出错的情况下,地址可以被传递到复制引擎,而不考虑存储器页是否驻留,并且复制过程是透明的。
[0084]
根据一个实施例,来自图7中的存储器或其他系统存储器的数据由存储器分区单元900取出并且存储在l2高速缓存904中,l2高速缓存904位于芯片上并且在各个gpc之间共享。在实施例中,每个存储器分区单元900包括与对应的存储器设备相关联的l2高速缓存904的至少一部分。在实施例中,在gpc内的各个单元中实现低级高速缓存。在实施例中,sm中的每一者可实施一级(“l1”)高速缓存,其中l1高速缓存是专用于特定sm的私有存储器,且来自l2高速缓存904的数据被取出并存储在l1高速缓存中的每一者中以供在sm的功能单元中处理。在实施例中,l2高速缓存904耦合到存储器接口906和xbar 720。
[0085]
在实施例中,rop单元902执行与像素彩相关的图形光栅操作,例如彩压缩、像素混合和更多。在实施例中,rop单元902结合光栅引擎908实施深度测试,从光栅引擎的剔除引擎接收与像素片段相关联的样本位置的深度。在实施例中,针对深度缓冲器中的与片段相关联的样本位置的对应深度来测试深度。在实施例中,如果片段通过样本位置的深度测试,那么rop单元902更新深度缓冲器且将深度测试的结果发送到光栅引擎。将理解,分区单元900的数目可不同于gpc的数目,且因此,在实施例中,每一rop单元902可耦合到gpc中的每一者。在一个实施例中,rop单元902跟踪从不同gpc接收的分组并且确定由rop单元902生成的哪个结果被路由到xbar。
[0086]
图10示出了根据一个实施例的流式多处理器,诸如图8的流式多处理器。在一个实施例中,sm 1000包括:指令高速缓存1002;一个或更多个调度器单元1004;寄存器文件1008;一个或更多个处理核心1010;一个或更多个特殊功能单元(“sfu”)1012;一个或更多个加载/存储单元(“lsu”)1014;互连网络1016;共享存储器/l1高速缓存1018;及其任何合适的组合。在实施例中,工作分发单元分派任务用于在ppu的gpc上执行,并且每个任务被分配给gpc内的特定dpc,并且如果该任务与着器程序相关联,则该任务被分配给sm 1000。在一个实施例中,调度器单元1004从工作分发单元接收任务并管理指派给sm 1000的一个或更多个线程块的指令调度。在一个实施例中,调度器单元1004将用于执行的线程块调度
为并行线程的线程束,其中每个线程块被分配至少一个线程束。在实施例中,每个线程束执行线程。在实施例中,调度器单元1004管理多个不同线程块,将线程束分配给不同线程块,并且然后在每个时钟周期期间将来自多个不同协作组的指令分派到各个功能单元(例如,核心1010、sfu 1012和lsu 1014)。
[0087]
协作组可以指用于组织通信线程组的编程模型,该编程模型允许开发者表达线程正在通信的粒度,使得能够表达更丰富、更高效的并行分解。在实施例中,协作启动api支持线程块之间的同步以执行并行算法。在实施例中,常规编程模型的应用提供用于同步协作线程的单个、简单的构造:跨线程块的所有线程的屏障(例如,syncthreads()函数)。然而,程序员经常想要以比线程块粒度更小的粒度定义线程组,并且在所定义的组内同步以实现更大的性能、设计灵活性和以集体组范围的功能接口的形式的软件重用。协作组使得程序员能够在子块(即,小至单个线程)和多块粒度处明确地定义线程组,并且对协作组中的线程执行集体操作,诸如同步。编程模型支持跨软件边界的干净合成,使得库和实用函数可以在它们的局部上下文中安全地同步,而不必作出关于收敛的假设。协作组原语启用协作并行性的新模式,包括生产者-消费者并行性、机会并行性以及跨整个线程块网格的全局同步。
[0088]
在实施例中,分派单元1006经配置以将指令发送到功能单元中的一者或一者以上,且调度器单元1004包含两个分派单元1006,其使来自相同线程束的两个不同指令能够在每一时钟周期期间被分派。在实施例中,每个调度器单元1004包括单个分派单元1006或附加分派单元1006。
[0089]
在实施例中,每个sm 1000包括寄存器文件1008,其为sm 1000的功能单元提供一组寄存器。在实施例中,寄存器文件1008被划分在各个功能单元之间,使得每个功能单元被分配寄存器文件1008的专用部分。在实施例中,寄存器文件1008被划分在由sm 1000执行的不同线程束之间,并且寄存器文件1008为连接到功能单元的数据路径的操作数提供临时存储。在实施例中,每个sm 1000包括多个l个处理核心1010。在实施例中,sm 1000包括大量(例如,128或更多)的不同处理核心1010。在实施例中,每个核心1010包括完全管线化的、单精度、双精度和/或混合精度处理单元,该处理单元包括浮点算术逻辑单元和整数算术逻辑单元。在实施例中,浮点算术逻辑单元实现用于浮点算术的ieee754-2008标准。在实施例中,核心1010包括64个单精度(32比特)浮点核心、64个整数核心、32个双精度(64比特)浮点核心和8个张量核心。
[0090]
根据实施例,张量核心被配置成执行矩阵运算。在实施例中,一个或更多个张量核心被包括在核心1010中。在实施例中,张量核心被配置成执行深度学习矩阵算术,诸如用于神经网络训练和推理的卷积运算。在实施例中,每个张量核心对4x4矩阵进行操作,并执行矩阵相乘和累加操作d=a
×
b+c,其中a、b、c和d是4x4矩阵。
[0091]
在实施例中,矩阵乘法输入a和b是16位浮点矩阵,并且累加矩阵c和d是16位浮点矩阵或32位浮点矩阵。在实施例中,张量核心对带有32位浮点累加的16位浮点输入数据进行操作。在实施例中,16位浮点乘法需要64个运算并且导致全精度乘积,然后使用32位浮点加法将全精度乘积与针对4x4x4矩阵乘法的其他中间乘积进行累加。在实施例中,张量核心用于执行由这些较小元素构建的大得多的二维或更高维矩阵运算。在实施例中,api(诸如cuda 9c++api)暴露专门的矩阵加载、矩阵相乘和累加、以及矩阵存储操作,以高效地使用
来自cuda-c++程序的张量核心。在实施例中,在cuda级别,线程束级别接口假设16
×
16大小的矩阵跨越线程束的所有32个线程。
[0092]
在实施例中,每个sm 1000包括执行特殊功能(例如,属性评估、倒数平方根等)的m个sfu 1012。在实施例中,sfu 1012包括被配置成遍历分层树数据结构的树遍历单元。在实施例中,sfu 1012包括被配置成执行纹理图过滤操作的纹理单元。在实施例中,纹理单元被配置为从存储器加载纹理图(例如,纹理元素的2d阵列),并对纹理图进行采样以产生采样的纹理值以供sm 1000执行的着器程序中使用。在实施例中,纹理图被存储在共享存储器/l1高速缓存中。根据一个实施例,纹理单元实现纹理操作,诸如使用mip-map(例如,不同细节层次的纹理图)的过滤操作。在实施例中,每个sm 1000包括两个纹理单元。
[0093]
在实施例中,每个sm 1000包括n个lsu 954,其实现共享存储器/l1高速缓存与寄存器文件1008之间的加载和存储操作。在实施例中,每个sm 1000包括将每个功能单元连接到寄存器文件1008并且将lsu 1014连接到寄存器文件1008的互连网络1016、共享存储器/l1高速缓存1018。在实施例中,互连网络1016是可以被配置为将任何功能单元连接至寄存器文件1008中的任何寄存器并且将lsu 1014连接至寄存器文件和共享存储器/l1高速缓存1018中的存储器位置的纵横式交换矩阵。
[0094]
在实施例中,共享存储器/l1高速缓存1018是片上存储器的阵列,其允许sm 1000和基元引擎之间以及sm 1000中的线程之间的数据存储和通信。在实施例中,共享存储器/l1高速缓存1018包括128kb的存储容量并且在从sm 1000到分区单元的路径中。在实施例中,共享存储器/l1高速缓存1018被用于高速缓存读和写。共享存储器/l1高速缓存1018、l2高速缓存和存储器中的一个或更多个是后备存储库。
[0095]
在实施例中,将数据高速缓存和共享存储器功能组合成单个存储器块为两种类型的存储器访问提供改进的性能。在实施例中,容量被不使用共享存储器的程序使用或可用作高速缓存,例如如果共享存储器被配置成使用容量的一半,则纹理和加载/存储操作可以使用剩余容量。根据实施例,共享存储器/l1高速缓存1018内的集成使得共享存储器/l1高速缓存1018能够用作用于流式传输数据的高吞吐量中转机构(conduit),而同时提供对频繁再使用数据的高带宽和低等待时间访问。当被配置用于通用并行计算时,与图形处理相比可以使用更简单的配置。在实施例中,固定功能图形处理单元被绕过,从而创建更简单的编程模型。在实施例中,在通用并行计算配置中,工作分发单元将线程的块直接指派和分发到dpc。根据一个实施例,块中的线程执行相同程序,使用计算中的唯一线程id以确保每个线程生成唯一结果,使用sm 1000执行程序并执行计算,使用共享存储器/l1高速缓存1018在线程之间通信,以及使用lsu 1014通过共享存储器/l1高速缓存1018和存储器分区单元来读取和写入全局存储器。在实施例中,当被配置用于通用并行计算时,sm 1000写入调度器单元可以用来在dpc上启动新工作的命令。
[0096]
在实施例中,ppu被包括在或耦合到台式计算机、膝上型计算机、平板计算机、服务器、超级计算机、智能电话(例如,无线手持式设备)、个人数字助理(“pda”)、数码相机、车辆、头戴式显示器、手持式电子设备等。在实施例中,ppu体现在单个半导体基板上。在一个实施例中,ppu连同一个或更多个其他设备(如额外的ppu、存储器、精简指令集计算机(“risc”)cpu、存储器管理单元(“mmu”)、数模转换器(“dac”)等)一起被包括在片上系统(“soc”)中。
[0097]
在实施例中,ppu可包括在图形卡上,该图形卡包括一个或更多个存储器设备。图形卡可被配置成与台式计算机的母板上的pcie槽对接。在又一个实施例中,ppu可以是包括在母板的芯片组中的集成图形处理单元(“igpu”)。
[0098]
图11示出了根据一个实施例的可以实现各种架构和/或功能的计算机系统1100。在实施例中,计算机系统1100被配置成实现贯穿本公开所描述的各个过程和方法。在一个或更多个实施例中,计算机系统1100可以是几个类似配置的计算机系统之一,这些计算机系统在数据中心内或作为数据中心的组件共同运行,并用于诸如训练机器学习模型、提供云计算环境、托管一个或更多个虚拟机和其他高性能计算任务之类的任务。在一个或更多个实施例中,计算机系统1100可以是诸如物联网(iot)设备的边缘设备,其以通信方式耦合到一个或更多个其他iot设备和/或本地服务器。
[0099]
在一个实施例中,计算机系统1100包括至少一个中央处理单元1102,中央处理单元1102连接至使用任何合适的协议(诸如pci(外围组件互连)、pci-express、agp(加速图形端口)、hypertransport或任何其他总线或点对点通信协议)实现的通信总线1110。在实施例中,计算机系统1100包括主存储器1104和控制逻辑(例如,实施为硬件、软件或其组合),并且数据存储在主存储器1104中,该主存储器可以采用随机存取存储器(“ram”)的形式。在实施例中,网络接口子系统1122提供到其他计算设备和网络的接口,用于从计算机系统1100接收数据和将数据从计算机系统1100发送到其他系统。
[0100]
在实施例中,计算机系统1100包括输入设备1108、并行处理系统1112和显示设备1106,该显示设备可以使用常规crt(阴极射线管)、lcd(液晶显示器)、led(发光二极管)、等离子体显示器、或其他合适的显示技术来实现。在实施例中,从诸如键盘、鼠标、触摸板、麦克风等输入设备1108接收用户输入。在实施例中,前述模块中的每个可以位于单个半导体平台上以形成处理系统。
[0101]
在本说明书中,单个半导体平台可以指唯一的基于单一半导体的集成电路或芯片。应注意的是,术语单个半导体平台还可以指具有增加的连接性的多芯片模块,该多芯片模块模拟片上操作,并且与利用常规中央处理单元(“cpu”)和总线实现方式相比做出实质性改进。当然,不同模块也可以根据用户的期望单独地定位或者定位在半导体平台的各种组合中。
[0102]
在实施例中,呈机器可读可执行代码或计算机控制逻辑算法形式的计算机程序被存储在主存储器1104和/或辅助存储装置中。根据一个实施例,计算机程序,如果由一个或更多个处理器执行,使系统1100能够执行各种功能。存储器1104、存储装置和/或任何其他存储装置是计算机可读介质的可能实例。辅助存储装置可以指代任何合适的存储设备或系统,如硬盘驱动器和/或可移动存储驱动器,表示软盘驱动器、磁带驱动器、致密盘驱动器、数字通用盘(“dvd”)驱动器、记录设备、通用串行总线(“usb”)闪存。
[0103]
在实施例中,各个先前附图的架构和/或功能性是在以下的背景下实现的:中央处理器1102、并行处理系统1112、能够进行中央处理器1102两者的至少一部分能力的集成电路;并行处理系统1112;芯片组(例如,被设计为作为用于执行相关功能的单元而工作和销售的一组集成电路等);以及集成电路的任何合适的组合。
[0104]
在实施例中,在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、专用系统等等的背景下实施各个先前附图的架构和/或功能性。在实施例中,计算机系
统1100可以采取以下形式:台式计算机、膝上型计算机、平板计算机、服务器、超级计算机、智能电话(例如,无线手持式设备)、个人数字助理(“pda”)、数码相机、车辆、头戴式显示器、手持式电子设备、移动电话设备、电视、工作站、游戏控制台、嵌入式系统、和/或任何其他类型的逻辑。
[0105]
在实施例中,并行处理系统1112包括多个ppu 1114和相关联的存储器1116。在实施例中,ppu经由互连1118和交换机1120或多路复用器连接至主机处理器或其他外围设备。在实施例中,并行处理系统1112跨ppu 1114分发计算任务,其可以是可并行的——例如,作为跨多个gpu线程块的计算任务分发的一部分。在实施例中,跨一些或全部ppu 1114共享存储器且可访问存储器(例如,用于读取和/或写入访问),但是这种共享存储器可能会引起与驻留在ppu中的本地存储器和寄存器的使用相对应的性能损失。在实施例中,ppu 1114的操作通过使用命令(诸如__syncthreads()等)来同步,该命令要求块中的所有线程(例如,跨多个ppu 1114执行)在继续进行之前达到代码的执行的某个点。
[0106]
因此,说明书和附图将被认为是说明性的而非限制性的。然而,显而易见的是,在不背离权利要求中阐述的本发明的更宽泛的精神和范围的情况下,可以对其做出各种修改和改变。
[0107]
其他变化也在本披露的精神内。因此,虽然所公开的技术易受不同修改和替代构造的影响,但是其某些所示实施例在附图中示出并且在上文已经详细描述。然而,应当理解,不旨在将本发明限制于所公开的一种或更多种具体形式,而是相反,旨在涵盖落入如所附权利要求限定的本发明的精神和范围内的所有修改、替代构造和等同物。
[0108]
在描述所披露的实施例的上下文中(尤其是在以下权利要求的上下文中),术语“一个”和“一种”以及“所述”以及类似指示物的使用应被解释为涵盖单数和复数两者,除非在此另外指示或与上下文明显矛盾。除非另外指出,否则术语“包含”、“具有”、“包括”和“含有”应被解释为开放式术语(即,意指“包括但不限于”)。当未修改并且涉及物理连接时,术语“连接”应被解释为部分地或完全地包含在、附接至或连接在一起,即使存在介入物。除非本文中另外指示,否则本文中的值的范围的列举仅旨在用作单独地提及落入所述范围内的每个单独值的速记方法,并且每个单独值如同其在本文中单独地列举一样被结合到说明书中。除非另外指明或上下文矛盾,否则术语“集合”(例如,“项目集合”)或“子集”的使用应被解释为包括一个或更多个成员的非空集合。此外,除非另外指明或上下文矛盾,否则术语对应集的“子集”不一定表示对应集的适当子集,而是该子集和对应集可以相等。
[0109]
除非另外明确声明或以其他方式与上下文明显矛盾,否则连接语言(如“a、b和c中的至少一者”或“a、b和c中的至少一个”形式的短语)另外与上下文一起被理解为一般用于呈现项、术语等可以是a或b或c、或a和b和c的集合的任何非空子集。例如,在具有三个成员的组的示例性实例中,连接短语“a、b以及c中的至少一个”以及“a、b以及c中的至少一个”指以下组中的任一个:{a}、{b}、{c}、{a、b}、{a、c}、{b、c}、{a、b、c}。因此,这种连接语言一般不旨在暗示某些实施例要求各自存在a中的至少一个、b中的至少一个以及c中的至少一个。此外,除非上下文另有说明或矛盾,否则术语“多个”表示多个状态(例如,“多个项”表示多个项)。多个项目中的项目的数目是至少两个,但是当显式地或通过上下文这样指示时可以更多。此外,除非另外陈述或另外从上下文清楚,否则短语“基于”是指“至少部分地基于”而不是“单独地基于”。
[0110]
在此描述的过程的操作可以按任何适合的顺序执行,除非在此另外指示或另外与上下文明显矛盾。在一个实施例中,诸如本文中描述的那些过程(或其变型和/或组合)的过程在配置有可执行指令的一个或更多个计算机系统的控制下执行,并且被实现为在一个或更多个处理器上通过硬件或其组合共同执行的代码(例如,可执行指令、一个或更多个计算机程序或一个或更多个应用)。在一个实施例中,代码存储在计算机可读存储介质上,例如,以包括可由一个或更多个处理器执行的多个指令的计算机程序的形式。在实施例中,计算机可读存储介质是非瞬态计算机可读存储介质,该非瞬态计算机可读存储介质不包括瞬态信号(例如,传播瞬态电或电磁传输)但包括瞬态信号的收发器内的非瞬态数据存储电路(例如,缓冲器、高速缓存、和队列)。在一个实施例中,代码(例如,可执行代码或源代码)存储在具有存储在其上的可执行指令(或用于存储可执行指令的其他存储器)的一个或更多个非暂态计算机可读存储介质的集合上,所述可执行指令当由计算机系统的一个或更多个处理器执行(即,由于被执行)时使计算机系统执行本文中所描述的操作。在实施例中,一组非暂态计算机可读存储介质包括多个非暂态计算机可读存储介质,并且多个非暂态计算机可读存储介质中的单独的非暂态存储介质中的一个或更多个缺少所有代码,而多个非暂态计算机可读存储介质共同地存储所有代码。在实施例中,可执行指令被执行以使得不同的指令被不同的处理器执行一例如,非瞬态计算机可读存储介质存储指令,并且主cpu在图形处理器单元执行其他指令时执行一些指令。在实施例中,计算机系统的不同组件具有单独的处理器并且不同的处理器执行指令的不同子集。
[0111]
因此,在实施例中,计算机系统被配置成用于实施一个或更多个服务,该一个或更多个服务单独地或共同地执行在此所描述的过程的操作,并且此类计算机系统配置有使能这些操作的执行的适用硬件和/或软件。进一步,实现本公开的实施例的计算机系统是单个设备,并且在另一实施例中,是分布式计算机系统,其包括不同地操作的多个设备,使得分布式计算机系统执行本文描述的操作,并且使得单个设备不执行所有操作。
[0112]
在此提供的任何和所有实例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本发明的实施例,并且不对本发明的范围造成限制,除非另外要求。说明书中的语言不应被解释为指示任何未要求保护的元件对于本发明的实践是必不可少的。
[0113]
在此描述了本披露的实施例,包括发明人已知的用于实施本发明的最佳模式。在阅读前述描述后,那些实施例的变型对于本领域普通技术人员而言可变得显而易见。发明人期望本领域技术人员酌情采用这种变化,并且发明人意图使本公开的实施例以与本文中具体描述不同的方式进行实践。因此,如适用法律所允许的,本公开的范围包括所附权利要求中陈述的主题的所有修改和等同物。此外,除非本文中另外指示或上下文明显矛盾,否则本公开范围涵盖了在其所有可能变型中的上述元件的任何组合。
[0114]
在此引用的所有参考文献(包括出版物、专利申请、以及专利)通过引用结合在此,其程度如同每个参考文献被单独地并且特别地指明通过引用结合在此,并且以其全文在此列出。
[0115]
在说明书和权利要求书中,可以使用术语“耦合”和“连接”及其派生词。应当理解,这些术语并不旨在作为彼此的同义词。相反,在具体示例中,“连接”或“耦合”可以用于指示两个或更多个元件彼此直接或间接物理或电接触。“耦合”还可以意味着两个或更多个元件彼此不直接接触,但仍彼此合作或交互。
[0116]
除非另外确切地陈述,否则应当理解的是,贯穿本说明书,术语如“处理”、“计算”、“运算”、“确定”等是指计算机或计算系统或类似电子计算装置的动作和/或过程,该动作和/或过程将表示为计算系统的寄存器和/或存储器内的物理(如电子)量的数据操纵和/或转换为类似地表示为计算系统的存储器、寄存器或其他此类信息存储、传输或显示装置内的物理量的其他数据。
[0117]
以类似的方式,术语“处理器”可以指处理来自寄存器和/或存储器的电子数据并将该电子数据转换成可以存储在寄存器和/或存储器中的其他电子数据的任何设备或设备的一部分。作为非限制性实例,“处理器”可以是中央处理单元(cpu)或图形处理单元(gpu)。“计算平台”可以包括一个或更多个处理器。如本文所使用的,“软件”过程可包括例如随时间执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。而且,每个过程可以指用于顺序地或并行地、连续地或间歇地执行指令的多个过程。术语“系统”和“方法”在此可互换地使用,只要该系统可以体现一种或多种方法并且这些方法可以被认为是系统。
[0118]
在本文件中,可以参考获得、获取、接收或将模拟或数字数据输入到子系统、计算机系统或计算机实现的机器中。获得、获取、接收或输入模拟和数字数据的过程可以以各种方式完成,诸如通过接收数据作为函数调用或对应用编程接口的调用的参数。在一些实现方式中,获得、获取、接收或输入模拟或数字数据的过程可以通过经由串行或并行接口传送数据来完成。在另实现方式中,获得、获取、接收或输入模拟或数字数据的过程可以通过经由计算机网络将数据从提供实体传输到获取实体来完成。还可参考提供、输出、传送、发送或呈现模拟或数字数据。在不同示例中,提供、输出、传送、发送或呈现模拟或数字数据的过程可以通过将数据作为函数调用的输入或输出参数、应用编程接口或进程间通信机制的参数来实现。
[0119]
尽管以上讨论阐述了所描述的技术的示例实现方式,但其他架构可以用于实现所描述的功能,并且旨在处于本披露的范围内。此外,尽管出于讨论的目的,以上定义了职责的特定分布,但是各种功能和职责可以根据情况以不同的方式分布和划分。
[0120]
鉴于以下条款,可以描述本公开的至少一个实施例:
[0121]
1.一种方法,包括:
[0122]
至少部分地基于语速确定语音结束(eos)阈值;
[0123]
对于音频输入的一组片段中的至少一个片段,预测表示所述至少一个片段的字符集;以及
[0124]
至少部分地基于对于为所述至少一个片段预测的所述字符集满足所述eos阈值的确定来确定与所述至少一个片段相对应的eos。
[0125]
2.如条款1所述的方法,其中为所述片段预测的字符集是通过连接主义时序分类(ctc)函数生成的,所述ctc函数生成字符集中的字符的概率分布作为输出。
[0126]
3.如条款2所述的方法,其中所述语速至少部分地基于一组词间间隔来确定。
[0127]
4.如条款3所述的方法,其中确定所述eos阈值还包括至少部分地基于所述一组词间间隔中的最大词间间隔来修改所述eos阈值。
[0128]
5.如条款3或4所述的方法,其中确定所述eos阈值还包括至少部分地基于所述一组词间间隔的平均值来修改所述eos阈值。
[0129]
6.如条款3-5中任一项所述的方法,其中确定所述eos阈值还包括至少部分地基于
所述一组词间间隔的方差和所述一组词间间隔中的最大词间间隔来修改所述eos阈值。
[0130]
7.如条款3-6中任一项所述的方法,其中所述一组词间间隔是通过至少确定所述字符集中的第一字符子集和所述字符集中的第二字符子集之间的时间量来计算的。
[0131]
8.如条款7所述的方法,其中所述时间量与所述一组片段中的片段的数量相对应。
[0132]
9.如条款7或8所述的方法,其中所述字符集至少通过将贪心选择算法应用于所述ctc函数的输出来确定。
[0133]
10.如条款9所述的方法,其中所述第一字符子集和所述第二字符子集还包括空白符号。
[0134]
11.如条款1-10中任一项所述的方法,其中确定与所述一组片段中的所述至少一个片段相对应的所述eos还包括确定在为所述片段预测的所述字符集合中包括的空白符号的百分比。
[0135]
12.如条款11所述的方法,其中确定与所述一组片段中的至少一个片段相对应的eos还包括确定百分比超过eos阈值。
[0136]
13.如条款11或12所述的方法,其中确定空白符号的百分比还包括确定第一长度的滑动窗口的空白符号的百分比,其中所述片段被包括在所述滑动窗口中。
[0137]
14.如条款1-13中任一项所述的方法,其中预测一个或更多个字符集包括使用一个或更多个神经网络来预测所述一个或更多个字符集。
[0138]
15.如条款14所述的方法,其中预测所述一个或更多个字符集还包括将所述一个或更多个神经网络的输出应用于连接主义时序分类(ctc)函数,所述ctc函数生成所述字符集中的字符的概率分布作为输出,并将所述概率分布提供给eos检测器。
[0139]
16.一种系统,包括:
[0140]
一个或更多个处理器;以及
[0141]
存储器,其存储指令,作为由所述一个或更多个处理器执行所述指令的结果,使所述系统:
[0142]
生成至少部分地基于语速确定的语音结束(eos)阈值的确定;以及
[0143]
至少部分地基于所述eos阈值生成对音频窗口的eos的确定。
[0144]
17.如条款16所述的系统,其中所述存储器还包括指令,作为由所述一个或更多个处理器执行所述指令的结果,使所述系统获得针对使用以下至少之一生成的音频窗口预测的字符集:一个或更多个神经网络,其实现神经声学模型或连接主义时序分类(ctc)函数。
[0145]
18.如条款16或17所述的系统,其中所述存储器还包括指令,作为由所述一个或更多个处理器执行所述指令的结果,使所述系统:
[0146]
从音频信号中获得一组词,其中所述音频窗口表示所述音频信号的一部分;以及
[0147]
至少部分地基于一组词间间隔来确定所述语速,所述一组词间间隔至少部分地基于所述一组词来确定。
[0148]
19.如条款16-18中任一项所述的系统,其中所述存储器还包括指令,作为由所述一个或更多个处理器执行所述指令的结果,使所述系统至少部分地基于一组词间间隔中的最大值来确定所述语速,所述一组词间间隔的最大值至少部分地基于包括在表示音频信号的一组窗口中的一组词来计算,其中所述音频窗口是所述一组窗口中的成员。
[0149]
20.如条款16-19中任一项所述的系统,其中所述音频窗口包括音频信号的多个时
间步长,所述音频信号包括语音。
[0150]
21.如条款16-20中任一项所述的系统,其中所述存储器还包括指令,作为由所述一个或更多个处理器执行所述指令的结果,使所述系统执行语音处理管线;以及
[0151]
其中使所述系统生成所述eos的所述确定的指令还包括如下指令,作为由所述一个或更多个处理器执行所述指令的结果,使所述系统生成作为所述语音处理管线的一部分的所述eos的所述确定。
[0152]
22.如条款21所述的系统,其中生成所述eos的确定是由所述语音处理管线的eos检测器执行的。
[0153]
23.一种方法,包括:
[0154]
至少部分地基于eos阈值将音频信号的音频帧的集合中的音频帧的子集标记为语音结束(eos),其中所述eos阈值至少部分地基于一组词间间隔来确定。
[0155]
24.如条款23所述的方法,其中所述方法还包括至少部分地基于由连接主义时序分类(ctc)函数生成的字符集来确定所述一组词间间隔,所述ctc函数使用由声学模型生成的所述音频帧的集合中的一组特征作为输入。
[0156]
25.如条款23或24所述的方法,其中确定所述eos阈值还包括将所述eos阈值设置为所述一组词间间隔的平均间隔。
[0157]
26.如条款23-25中任一项所述的方法,其中所述方法还包括作为将所述音频帧的子集标记为eos的结果,生成所述音频信号的转录本。
[0158]
27.如条款23-26中任一项所述的方法,其中所述方法还包括将所述eos阈值提供给语音识别管线。
[0159]
28.一种处理器,包括:一个或更多个算术逻辑单元(alu),用于生成语音结束(eos)阈值的确定,所述eos阈值至少部分地基于使用一个或更多个神经网络的语速,至少部分地通过以下方式来确定:
[0160]
由所述一个或更多个神经网络,对于音频输入的一组片段中的一个片段,预测与所述片段相关联的字符集;以及
[0161]
由所述一个或更多个神经网络,至少部分地基于对于与所述片段相关联的所述字符集满足所述eos阈值的确定来确定与所述片段相对应的eos。
[0162]
29.如条款28所述的处理器,其中所述一个或更多个神经网络还包括神经声学模型。
[0163]
30.如条款28或29所述的处理器,其中所述一个或更多个神经网络用于实现语音处理管线。
[0164]
31.如条款28-30中任一项所述的处理器,其中所述一个或更多个alu进一步至少部分地基于由连接主义时序分类(ctc)函数生成的字符集来确定一组词间间隔,所述ctc函数使用由声学模型生成的所述音频输入的所述一组片段的一组特征作为输入。
[0165]
此外,尽管已经用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于所述具体特征或动作。相反,特定特征和动作是作为实现权利要求的示范性形式来公开的。
[0166]
服务器和数据中心
[0167]
以下附图非限制性地阐述了可用于实现至少一个实施例的示例性网络服务器和
基于数据中心的系统。
[0168]
图12示出了根据至少一个实施例的分布式系统1200。在至少一个实施例中,分布式系统1200包括一个或更多个客户端计算设备1202、1204、1206、和1208,其被配置为在一个或更多个网络1210上执行和操作诸如web浏览器、专有客户端和/或其变体之类的客户端应用程序。例如,一个或更多个客户端计算设备1202、1204、1206和1208执行应用以实现如上所述的音频捕获设备。在至少一个实施例中,服务器1212可以通过网络1210与远程客户端计算设备1202、1204、1206和1208通信耦合。此外,在各种实施例中,服务器1212执行如上所述的音频分析器和/或语音处理管线的组件。
[0169]
在至少一个实施例中,服务器1212可以适于运行一个或更多个服务或软件应用程序,例如可以管理跨多个数据中心的单点登录(sso)访问的会话活动的服务和应用程序。在至少一个实施例中,服务器1212还可以提供可以包括非虚拟和虚拟环境的其他服务或软件应用程序。在至少一个实施例中,这些服务可以作为基于网络的或云服务或在软件即服务(saas)模型下提供给客户端计算设备1202、1204、1206和/或1208的用户。在至少一个实施例中,操作客户端计算设备1202、1204、1206和/或1208的用户又可以利用一个或更多个客户端应用程序与服务器1212交互以利用这些组件提供的服务。
[0170]
在至少一个实施例中,系统1200的软件组件1218、1220和1222在服务器1212上实现。在至少一个实施例中,系统1200的一个或更多个组件和/或由这些组件提供的服务也可以由客户端计算设备1202、1204、1206和/或1208中的一个或更多个来实现。在至少一个实施例中,操作客户端计算设备的用户然后可以利用一个或更多个客户端应用程序来使用由这些组件提供的服务。在至少一个实施例中,这些组件可以以硬件、固件、软件或它们的组合来实现。应当理解,各种不同的系统配置是可能的,它们可以不同于分布式系统1200。因此,图12是用于实现实施例系统的分布式系统的一个示例并且不旨在进行限制。
[0171]
在至少一个实施例中,客户端计算设备1202、1204、1206和/或1208可以包括各种类型的计算系统。在至少一个实施例中,客户端计算设备可以包括便携式手持设备(例如,蜂窝电话、计算平板电脑、个人数字助理(pda))或可穿戴设备(例如,google头戴式显示器)、运行软件(例如microsoft windows)和/或各种移动操作系统(例如ios、windows phone、android、黑莓10、palm os和/或其变体)。在至少一个实施例中,设备可以支持各种应用,例如各种与互联网相关的应用、、短消息服务(sms)应用,并且可以使用各种其他通信协议。在至少一个实施例中,客户端计算设备还可以包括通用个人计算机,包括例如运行各种版本的microsoftapple和/或linux操作系统的个人计算机和/或膝上型计算机。在至少一个实施例中,客户端计算设备可以是运行各种商业上可用的或类unix操作系统中的任何一种的工作站计算机,包括但不限于各种gnu/linux操作系统,例如google chrome os。在至少一个实施例中,客户端计算设备还可以包括能够通过网络1210进行通信的电子设备,例如瘦客户端计算机、支持互联网的游戏系统(例如,带有或不带有手势输入设备的microsoft xbox游戏机)和/或个人消息传递设备。尽管图12中的分布式系统1200被示为具有四个客户端计算设备,但是可以支持任意数量的客户端计算设备。其他设备,例如带有传感器的设备等,可以与服务器1212交互。
[0172]
在至少一个实施例中,分布式系统1200中的网络1210可以是任何类型的网络,其
可以支持使用多种可用协议中的任何一种的数据通信,包括但不限于tcp/ip(传输控制协议/互联网协议)、sna(系统网络架构)、ipx(互联网数据包交换)、appletalk和/或其变体。在至少一个实施例中,网络1210可以是局域网(lan)、基于以太网的网络、令牌环、广域网、互联网、虚拟网络、虚拟专用网(vpn)、内联网、外联网、公共交换电话网(pstn)、红外线网络、无线网络(例如,在任何电气和电子协会(ieee)802.11协议套件、和/或任何其他无线协议下运行的网络)和/或这些和/或其他网络的任何组合。
[0173]
在至少一个实施例中,服务器1212可以由一个或更多个通用计算机、专用服务器计算机(例如,包括pc(个人计算机)服务器、服务器、中型服务器、大型计算机、机架式服务器等)、服务器、服务器集或任何其他适当的布置和/或组合组成。在至少一个实施例中,服务器1212可以包括一个或更多个运行虚拟操作系统或涉及虚拟化的其他计算架构的虚拟机。在至少一个实施例中,可以虚拟化一个或更多个灵活的逻辑存储设备池以维护服务器的虚拟存储设备。在至少一个实施例中,虚拟网络可以由服务器1212使用软件定义的网络来控制。在至少一个实施例中,服务器1212可以适用于运行一个或更多个服务或软件应用程序。
[0174]
在至少一个实施例中,服务器1212可以运行任何操作系统,以及任何商业可用的服务器操作系统。在至少一个实施例中,服务器1212还可以运行多种附加服务器应用程序和/或中间层应用程序中的任一种,包括http(超文本传输协议)服务器、ftp(文件传输协议)服务器、cgi(通用网关接口)服务器、服务器、数据库服务器和/或其变体。在至少一个实施例中,示例性数据库服务器包括但不限于可从oracle、microsoft、sybase、ibm(国际商业机器)和/或其变体商购的那些。
[0175]
在至少一个实施例中,分布式系统1200还可以包括一个或更多个数据库1214和1216。在至少一个实施例中,数据库可以提供一种用于存储诸如音频、语速信息、用户信息、使用模式信息、适配规则信息和其他信息的信息的机制。在至少一个实施例中,数据库1214和1216可以驻留在各种位置。在至少一个实施例中,数据库1214和1216中的一个或更多个可以驻留在服务器1212本地(和/或驻留在)服务器1212的非暂时性存储介质上。在至少一个实施例中,数据库1214和1216可以远离服务器1212并且通过基于网络的或专用的连接与服务器1212通信。在至少一个实施例中,数据库1214和1216可以驻留在存储区域网络(san)中。在至少一个实施例中,用于执行归属于服务器1212的功能的任何必要文件可以适当地存储在服务器1212上本地和/或远程。在至少一个实施例中,数据库1214和1216可以包括关系数据库,例如适于存储、更新和检索数据以响应于sql格式命令的数据库。
[0176]
图13示出了根据至少一个实施例的云计算环境1302。在至少一个实施例中,云计算环境1302包括一个或更多个计算机系统/服务器1304,诸如个人数字助理(pda)或蜂窝电话1306a、台式计算机1306b、膝上型计算机1306c和/或汽车计算机系统1306n之类的计算设备与之通信。在至少一个实施例中,这允许基础设施、平台和/或软件作为来自云计算环境1302的服务提供,从而不需要每个客户端单独维护这些资源。应当理解,图13中所示的计算设备1306a-n的类型仅用于说明,并且云计算环境1302可以通过任何类型的网络和/或网络/可寻址连接(例如,使用网络浏览器)与任何类型的计算机化设备通信。在各种实施例中,计算设备1306a-n可以简单地捕获音频并将捕获的音频(例如,输入音频)传送到一个或更多个计算机系统/服务器1304。例如,汽车计算机系统1306n将捕获的音频从车厢内直接
传输到一个或更多个计算机系统/服务器1304而不处理捕获的音频。
[0177]
在至少一个实施例中,可以表示为云计算节点的计算机系统/服务器1304可与许多其他通用或专用计算系统环境或配置一起操作。在至少一个实施例中,可能适合与计算机系统/服务器1304一起使用的计算系统、环境和/或配置的示例包括但不限于,个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络pc、小型计算机系统、大型计算机系统和分布式云计算环境,包括任何上述系统或设备,和/或其变体。
[0178]
在至少一个实施例中,计算机系统/服务器1304可以在由计算机系统执行的计算机系统可执行指令(例如程序模块)的一般上下文中进行描述。在至少一个实施例中,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。在至少一个实施例中,示例性计算机系统/服务器1304可以在分布式云计算环境中实施,其中任务由通过通信网络链接的远程处理设备执行。在至少一个实施例中,在分布式云计算环境中,程序模块可以位于本地和远程计算机系统存储介质中,包括存储器存储设备。
[0179]
图14示出了根据至少一个实施例的由云计算环境1302(图13)提供的一组功能抽象层。应当预先理解,图14中所示的组件、层和功能仅旨在说明性的,并且组件、层和功能可以变化。
[0180]
在至少一个实施例中,硬件和软件层1402包括硬件和软件组件。在至少一个实施例中,硬件组件的示例包括大型机、各种基于risc(精简指令集计算机)架构的服务器、各种计算系统、超级计算系统、存储设备、网络、网络组件和/或其变体。在至少一个实施例中,软件组件的示例包括网络应用服务器软件、各种应用服务器软件、各种数据库软件和/或其变体。
[0181]
在至少一个实施例中,虚拟化层1404提供抽象层,从该抽象层可以提供以下示例性虚拟实体:虚拟服务器、虚拟存储、虚拟网络,包括虚拟专用网络、虚拟应用、虚拟客户端和/或其变体。
[0182]
在至少一个实施例中,管理层1406提供各种功能。在至少一个实施例中,资源供应提供计算资源和用于在云计算环境中执行任务的其他资源的动态采购。在至少一个实施例中,计量提供在云计算环境内利用资源时的使用跟踪,以及对这些资源的消耗进行计费或开具发票。在至少一个实施例中,资源可以包括应用软件许可证。在至少一个实施例中,安全性为用户和任务提供身份验证,以及对数据和其他资源的保护。在至少一个实施例中,用户界面为用户和系统管理员提供对云计算环境的访问。在至少一个实施例中,服务水平管理提供云计算资源分配和管理,从而满足所需的服务水平。在至少一个实施例中,服务水平协议(sla)管理为云计算资源提供预先安排和采购,根据sla预期未来需求。
[0183]
在至少一个实施例中,工作负载层1408提供使用云计算环境的功能。在至少一个实施例中,可以从该层提供的工作负载和功能的示例包括:映射和导航、软件开发和管理、教育服务、数据分析和处理、事务处理和服务交付。例如,工作负载层1408可以执行如上所述的全部或部分语音处理管线。

技术特征:


1.一种方法,包括:至少部分地基于语速确定语音结束(eos)阈值;对于音频输入的一组片段中的至少一个片段,预测表示所述至少一个片段的字符集;以及至少部分地基于对于为所述至少一个片段预测的所述字符集满足所述eos阈值的确定来确定与所述至少一个片段相对应的eos。2.如权利要求1所述的方法,其中为所述片段预测的所述字符集是通过连接主义时序分类(ctc)函数生成的,所述ctc函数生成所述字符集中的字符的概率分布作为输出。3.如权利要求2所述的方法,其中所述语速至少部分地基于一组词间间隔来确定。4.如权利要求3所述的方法,其中确定所述eos阈值还包括至少部分地基于所述一组词间间隔中的最大词间间隔来修改所述eos阈值。5.如权利要求3所述的方法,其中确定所述eos阈值还包括至少部分地基于所述一组词间间隔的平均值来修改所述eos阈值。6.如权利要求3所述的方法,其中确定所述eos阈值还包括至少部分地基于所述一组词间间隔的方差和所述一组词间间隔中的最大词间间隔来修改所述eos阈值。7.如权利要求3所述的方法,其中所述一组词间间隔是通过至少确定所述字符集中的第一字符子集和所述字符集中的第二字符子集之间的时间量来计算的。8.如权利要求7所述的方法,其中所述时间量与所述一组片段中的片段的数量相对应。9.如权利要求7所述的方法,其中所述字符集至少通过将贪心选择算法应用于所述ctc函数的输出来确定。10.如权利要求9所述的方法,其中所述第一字符子集和所述第二字符子集还包括空白符号。11.如权利要求1所述的方法,其中确定与所述一组片段中的所述至少一个片段相对应的所述eos还包括确定在为所述片段预测的所述字符集中包括的空白符号的百分比。12.如权利要求11所述的方法,其中确定与所述一组片段中的至少一个片段相对应的eos还包括:确定所述百分比超过所述eos阈值。13.如权利要求11所述的方法,其中确定空白符号的所述百分比还包括确定第一长度的滑动窗口的空白符号的所述百分比,其中所述片段被包括在所述滑动窗口中。14.如权利要求1所述的方法,其中预测一个或更多个字符集包括使用一个或更多个神经网络来预测所述一个或更多个字符集。15.如权利要求14所述的方法,其中所述预测所述一个或更多个字符集还包括将所述一个或更多个神经网络的输出应用于连接主义时序分类(ctc)函数,所述ctc函数生成所述字符集中的字符的概率分布作为输出,并将所述概率分布提供给eos检测器。16.一种系统,包括:一个或更多个处理器;以及存储器,其存储指令,作为由所述一个或更多个处理器执行所述指令的结果,使所述系统:生成至少部分地基于语速确定的语音结束(eos)阈值的确定;以及至少部分地基于所述eos阈值生成对音频窗口的eos的确定。
17.如权利要求16所述的系统,其中所述存储器还包括指令,作为由所述一个或更多个处理器执行所述指令的结果,使所述系统获得针对使用以下至少之一生成的所述音频窗口预测的字符集:一个或更多个神经网络,其实现神经声学模型或连接主义时序分类(ctc)函数。18.如权利要求16所述的系统,其中所述存储器还包括指令,作为由所述一个或更多个处理器执行所述指令的结果,使所述系统:从音频信号中获得一组词,其中所述音频窗口表示所述音频信号的一部分;以及至少部分地基于一组词间间隔来确定所述语速,所述一组词间间隔至少部分地基于所述一组词来确定。19.如权利要求16所述的系统,其中所述存储器还包括指令,作为由所述一个或更多个处理器执行所述指令的结果,使所述系统至少部分地基于一组词间间隔中的最大值来确定所述语速,所述一组词间间隔的最大值至少部分地基于包括在表示音频信号的一组窗口中的一组词来计算,其中所述音频窗口是所述一组窗口中的成员。20.如权利要求16所述的系统,其中所述音频窗口包括音频信号的多个时间步长,所述音频信号包括语音。21.如权利要求16所述的系统,其中所述存储器还包括指令,作为由所述一个或更多个处理器执行所述指令的结果,使所述系统执行语音处理管线;以及其中使所述系统生成所述eos的所述确定的指令还包括如下指令,作为由所述一个或更多个处理器执行所述指令的结果,使所述系统生成作为所述语音处理管线的一部分的所述eos的所述确定。22.如权利要求21所述的系统,其中生成所述eos的所述确定是由所述语音处理管线的eos检测器执行的。23.一种方法,包括:至少部分地基于eos阈值将音频信号的音频帧的集合中的音频帧的子集标记为语音结束(eos),其中所述eos阈值至少部分地基于一组词间间隔来确定。24.如权利要求23所述的方法,其中所述方法还包括至少部分地基于由连接主义时序分类(ctc)函数生成的字符集来确定所述一组词间间隔,所述ctc函数使用由声学模型生成的所述音频帧的集合中的一组特征作为输入。25.如权利要求23所述的方法,其中确定所述eos阈值还包括将所述eos阈值设置为所述一组词间间隔的平均间隔。26.如权利要求23所述的方法,其中所述方法还包括作为将所述音频帧的子集标记为eos的结果,生成所述音频信号的转录本。27.如权利要求23所述的方法,其中所述方法还包括将所述eos阈值提供给语音识别管线。28.一种处理器,包括:一个或更多个算术逻辑单元(alu),用于生成语音结束(eos)阈值的确定,所述eos阈值至少部分地基于使用一个或更多个神经网络的语速,至少部分地通过以下方式来确定:由所述一个或更多个神经网络,对于音频输入的一组片段中的一个片段,预测与所述片段相关联的字符集;以及
由所述一个或更多个神经网络,至少部分地基于对于与所述片段相关联的所述字符集满足所述eos阈值的确定来确定与所述片段相对应的eos。29.如权利要求28所述的处理器,其中所述一个或更多个神经网络还包括神经声学模型。30.如权利要求28所述的处理器,其中所述一个或更多个神经网络用于实现语音处理管线。31.如权利要求28所述的处理器,其中所述一个或更多个alu进一步至少部分地基于由连接主义时序分类(ctc)函数生成的字符集来确定一组词间间隔,所述ctc函数使用由声学模型生成的所述音频输入的所述一组片段的一组特征作为输入。

技术总结


在各种示例中,至少部分地基于说话者的语速来确定音频信号的语音结束(EOS)。对于音频信号的片段,至少部分地基于EOS阈值来指示EOS,所述EOS阈值至少部分地基于说话者的语速来确定。来确定。来确定。


技术研发人员:

U

受保护的技术使用者:

辉达公司

技术研发日:

2022.01.28

技术公布日:

2022/10/21

本文发布于:2024-09-23 13:29:47,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/23089.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   多个   阈值   存储器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议