语音识别_语音识别技术 - CSDN
语音识别 订阅
语音识别是一门交叉学科。近二十年来,语音识别技术取得显著进步,开始从实验室走向市场。人们预计,未来10年内,语音识别技术将进入工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域。 语音识别听写机在一些领域的应用被美国新闻界评为1997年计算机发展十件大事之一。很多专家都认为语音识别技术是2000年至2010年间信息技术领域十大重要的科技发展技术之一。 语音识别技术所涉及的领域包括:信号处理、模式识别、概率论和信息论、发声机理和听觉机理、人工智能等等。 展开全文
语音识别是一门交叉学科。近二十年来,语音识别技术取得显著进步,开始从实验室走向市场。人们预计,未来10年内,语音识别技术将进入工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域。 语音识别听写机在一些领域的应用被美国新闻界评为1997年计算机发展十件大事之一。很多专家都认为语音识别技术是2000年至2010年间信息技术领域十大重要的科技发展技术之一。 语音识别技术所涉及的领域包括:信号处理、模式识别、概率论和信息论、发声机理和听觉机理、人工智能等等。
信息
外文名
Voice recognition
发展史
1952年贝尔研究所Davis
中国发展
中国的语音识别研究起始
中文名
语音识别
简    介
与机器进行语音交流
语音识别简介
与机器进行语音交流,让机器明白你说什么,这是人们长期以来梦寐以求的事情。中国物联网校企联盟形象得把语音识别比做为“机器的听觉系统”。语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术。 语音识别技术主要包括特征提取技术、模式匹配准则及模型训练技术三个方面。语音识别技术车联网也得到了充分的引用,例如在翼卡车联网中,只需按一键通客服人员口述即可设置目的地直接导航,安全、便捷。
收起全文
精华内容
参与话题
  • 5分钟弄懂语音识别技术原理

    万次阅读 多人点赞 2018-02-08 22:49:56
    文/张俊博知乎链接:https://www.zhihu.com/question/20398418/answer/18080841简要给大家介绍一下语音怎么变文字的吧。希望这个介绍能让所有同学看懂。首先,我们知道声音实际上是一种波。常见的mp3、wmv等格式都是...

    文/张俊博

    知乎链接:https://www.zhihu.com/question/20398418/answer/18080841


    简要给大家介绍一下语音怎么变文字的吧。希望这个介绍能让所有同学看懂。


    首先,我们知道声音实际上是一种波。常见的mp3、wmv等格式都是压缩格式,必须转成非压缩的纯波形文件来处理,比如Windows PCM文件,也就是俗称的wav文件。wav文件里存储的除了一个文件头以外,就是声音波形的一个个点了。下图是一个波形的示例。


    640?wx_fmt=png&wxfrom=5&wx_lazy=1

    在开始语音识别之前,有时需要把首尾端的静音切除,降低对后续步骤造成的干扰。这个静音切除的操作一般称为VAD,需要用到信号处理的一些技术。要对声音进行分析,需要对声音分帧,也就是把声音切开成一小段一小段,每小段称为一帧。分帧操作一般不是简单的切开,而是使用移动窗函数来实现,这里不详述。帧与帧之间一般是有交叠的,就像下图这样:

    640?wx_fmt=png&wxfrom=5&wx_lazy=1

    图中,每帧的长度为25毫秒,每两帧之间有25-10=15毫秒的交叠。我们称为以帧长25ms、帧移10ms分帧。图中,每帧的长度为25毫秒,每两帧之间有25-10=15毫秒的交叠。我们称为以帧长25ms、帧移10ms分帧。


    分帧后,语音就变成了很多小段。但波形在时域上几乎没有描述能力,因此必须将波形作变换。常见的一种变换方法是提取MFCC特征,根据人耳的生理特性,把每一帧波形变成一个多维向量,可以简单地理解为这个向量包含了这帧语音的内容信息。这个过程叫做声学特征提取。实际应用中,这一步有很多细节,声学特征也不止有MFCC这一种,具体这里不讲。


    至此,声音就成了一个12行(假设声学特征是12维)、N列的一个矩阵,称之为观察序列,这里N为总帧数。观察序列如下图所示,图中,每一帧都用一个12维的向量表示,色块的颜色深浅表示向量值的大小。

    640?wx_fmt=png

    接下来就要介绍怎样把这个矩阵变成文本了。首先要介绍两个概念:

    1. 音素:单词的发音由音素构成。对英语,一种常用的音素集是卡内基梅隆大学的一套由39个音素构成的音素集,参见The CMU Pronouncing Dictionary。汉语一般直接用全部声母和韵母作为音素集,另外汉语识别还分有调无调,不详述。

    2. 状态:这里理解成比音素更细致的语音单位就行啦。通常把一个音素划分成3个状态。


    语音识别是怎么工作的呢?实际上一点都不神秘,无非是:

    第一步,把帧识别成状态(难点);

    第二步,把状态组合成音素;

    第三步,把音素组合成单词。


    如下图所示:

    640?wx_fmt=png

    图中,每个小竖条代表一帧,若干帧语音对应一个状态,每三个状态组合成一个音素,若干个音素组合成一个单词。也就是说,只要知道每帧语音对应哪个状态了,语音识别的结果也就出来了。图中,每个小竖条代表一帧,若干帧语音对应一个状态,每三个状态组合成一个音素,若干个音素组合成一个单词。也就是说,只要知道每帧语音对应哪个状态了,语音识别的结果也就出来了。


    那每帧音素对应哪个状态呢?有个容易想到的办法,看某帧对应哪个状态的概率最大,那这帧就属于哪个状态。比如下面的示意图,这帧对应S3状态的概率最大,因此就让这帧属于S3状态。

    640?wx_fmt=png

    那这些用到的概率从哪里读取呢?有个叫“声学模型”的东西,里面存了一大堆参数,通过这些参数,就可以知道帧和状态对应的概率。获取这一大堆参数的方法叫做“训练”,需要使用巨大数量的语音数据,训练的方法比较繁琐,这里不讲。


    但这样做有一个问题:每一帧都会得到一个状态号,最后整个语音就会得到一堆乱七八糟的状态号,相邻两帧间的状态号基本都不相同。假设语音有1000帧,每帧对应1个状态,每3个状态组合成一个音素,那么大概会组合成300个音素,但这段语音其实根本没有这么多音素。如果真这么做,得到的状态号可能根本无法组合成音素。实际上,相邻帧的状态应该大多数都是相同的才合理,因为每帧很短。


    解决这个问题的常用方法就是使用隐马尔可夫模型(Hidden Markov Model,HMM)。这东西听起来好像很高深的样子,实际上用起来很简单:

    第一步,构建一个状态网络。

    第二步,从状态网络中寻找与声音最匹配的路径。


    这样就把结果限制在预先设定的网络中,避免了刚才说到的问题,当然也带来一个局限,比如你设定的网络里只包含了“今天晴天”和“今天下雨”两个句子的状态路径,那么不管说些什么,识别出的结果必然是这两个句子中的一句。


    那如果想识别任意文本呢?把这个网络搭得足够大,包含任意文本的路径就可以了。但这个网络越大,想要达到比较好的识别准确率就越难。所以要根据实际任务的需求,合理选择网络大小和结构。


    搭建状态网络,是由单词级网络展开成音素网络,再展开成状态网络。语音识别过程其实就是在状态网络中搜索一条最佳路径,语音对应这条路径的概率最大,这称之为“解码”。路径搜索的算法是一种动态规划剪枝的算法,称之为Viterbi算法,用于寻找全局最优路径。

    640?wx_fmt=png

    这里所说的累积概率,由三部分构成,分别是:

    1. 观察概率:每帧和每个状态对应的概率

    2. 转移概率:每个状态转移到自身或转移到下个状态的概率

    3. 语言概率:根据语言统计规律得到的概率


    其中,前两种概率从声学模型中获取,最后一种概率从语言模型中获取。语言模型是使用大量的文本训练出来的,可以利用某门语言本身的统计规律来帮助提升识别正确率。语言模型很重要,如果不使用语言模型,当状态网络较大时,识别出的结果基本是一团乱麻。


    以上介绍的是传统的基于HMM的语音识别。事实上,HMM的内涵绝不是上面所说的“无非是个状态网络”那么简单。以上的文字只是想让大家容易理解,并不追求严谨。

    展开全文
  • 本文搭建一个完整的中文语音识别系统,包括声学模型和语言模型,能够将输入的音频信号识别为汉字。 声学模型使用了应用较为广泛的递归循环网络中的GRU-CTC的组合,除此之外还引入了科大讯飞提出的DFCNN深度全序列...

    本文搭建一个完整的中文语音识别系统,包括声学模型和语言模型,能够将输入的音频信号识别为汉字。

    该系统实现了基于深度框架的语音识别中的声学模型和语言模型建模,其中声学模型包括CNN-CTC、GRU-CTC、CNN-RNN-CTC,语言模型包含transformerCBHG
    数据集采用了目前能找到的所有中文免费数据,包括:thchs-30、aishell、primewords、st-cmd四个数据集,训练集总计大约450个小时。

    项目地址:https://github.com/audier/DeepSpeechRecognition

    为了方便同学们自己做实验,写了实践版的tutorial:

    1. 声学模型

    声学模型目前开源了部分示例模型,后期将不定期更新一些模型。

    GRU-CTC

    我们使用 GRU-CTC的结构搭建了第一个声学模型,该模型在项目的gru_ctc.py文件中。
    利用循环神经网络可以利用语音上下文相关的信息,得到更加准确地信息,而GUR又能选择性的保留需要的长时信息,使用双向rnn又能够充分的利用上下文信号。
    但该方法缺点是一句话说完之后才能进行识别,且训练相对cnn较慢。该模型使用python/keras进行搭建,本文系统都使用python搭建。

    • 网络结构如下:
        def _model_init(self):
            self.inputs = Input(name='the_inputs', shape=(None, 200, 1))
            x = Reshape((-1, 200))(self.inputs)
            x = dense(512, x)
            x = dense(512, x)
            x = bi_gru(512, x)
            x = bi_gru(512, x)
            x = bi_gru(512, x)
            x = dense(512, x)
            self.outputs = dense(self.vocab_size, x, activation='softmax')
            self.model = Model(inputs=self.inputs, outputs=self.outputs)
            self.model.summary()
    

    DFCNN

    由于两个原因在使用GRU作为语音识别的时候我们会遇到问题。

    • 一方面是我们常常使用双向循环神经网络才能取得更好的识别效果,这样会影响解码实时性。
    • 另一方面随着网络结构复杂性增加,双向GRU的参数是相同节点数全连接层的6倍,这样会导致训练速度非常缓慢。

    科大讯飞提出了一种使用深度卷积神经网络来对时频图进行识别的方法,就是DFCNN
    论文地址:http://xueshu.baidu.com/usercenter/paper/show?paperid=be5348048dd263aced0f2bdc75a535e8&site=xueshu_se

    利用CNN参数共享机制,可以将参数数量下降几个数量级别,且深层次的卷积和池化层能够充分考虑语音信号的上下文信息,且可以在较短的时间内就可以得到识别结果,具有较好的实时性。
    该模型在cnn_ctc.py中,实验中是所有网络结果最好的模型,目前能够取得较好的泛化能力。其网络结构如下:
    DFCNN

    def cnn_cell(size, x, pool=True):
        x = norm(conv2d(size)(x))
        x = norm(conv2d(size)(x))
        if pool:
            x = maxpool(x)
        return x
    
    class Am():
        def _model_init(self):
            self.inputs = Input(name='the_inputs', shape=(None, 200, 1))
            self.h1 = cnn_cell(32, self.inputs)
            self.h2 = cnn_cell(64, self.h1)
            self.h3 = cnn_cell(128, self.h2)
            self.h4 = cnn_cell(128, self.h3, pool=False)
            self.h5 = cnn_cell(128, self.h4, pool=False)
            # 200 / 8 * 128 = 3200
            self.h6 = Reshape((-1, 3200))(self.h5)
            self.h7 = dense(256)(self.h6)
            self.outputs = dense(self.vocab_size, activation='softmax')(self.h7)
            self.model = Model(inputs=self.inputs, outputs=self.outputs)
            self.model.summary()
    

    DFSMN

    而前馈记忆神经网络也也解决了双向GRU的参数过多和实时性较差的缺点,它利用一个记忆模块,包含了上下几帧信息,能够得到不输于双向GRU-CTC的识别结果,阿里最新的开源系统就是基于DFSMN的声学模型,只不过在kaldi的框架上实现的。我们将考虑使用DFSMN+CTC的结构在python上实现。该网络实质上是用一个特殊的CNN就可以取得相同的效果,我们将CNN的宽设置为memory size,将高度设置为feature dim,将channel设置为hidden units,这样一个cnn的层就可以模仿fsmn的实现了。
    结构如下:
    DFSMN

    2. 语言模型

    n-gram

    n元语法是一个非常经典的语言模型,这里不过多介绍啦。
    如果想要通过语料来训练一个n-gram的模型,可以参考我的小实验的实现方法。

    CBHG

    该想法来自于一个大神搞输入法的项目,下面部分也引用此处:搜喵出入法
    他是利用该模型建立一个按键到汉字的作用,本文对其结构和数据处理部分稍作改动,作为语言模型。

    拼音输入的本质上就是一个序列到序列的模型:输入拼音序列,输出汉字序列。所以天然适合用在诸如机器翻译的seq2seq模型上。

    模型初始输入是一个随机采样的拼音字母的character embedding,经过一个CBHG的模型,输出是五千个汉字对应的label。
    这里使用的CBHG模块是state-of-art的seq2seq模型,用在Google的机器翻译和语音合成中,该模型放在cbhg.py中,结构如下:
    图片来自 Tacotron: Towards End-to-End Speech Synthesis
    CBHG

    该模型训练实验结果如下,实际上,后续和transformer的比较中,该模型无论是收敛速度还是识别效果上都是很难和transformer比较。

    请输入测试拼音:ta1 mei2 you3 duo1 shao3 hao2 yan2 zhuang4 yu3 dan4 ta1 que4 ba3 ai4 qin1 ren2 ai4 jia1 ting2 ai4 zu3 guo2 ai4 jun1 dui4 wan2 mei3 de tong3 yi1 le qi3 lai2
    她没有多少豪言壮语但她却把爱亲人爱家庭爱祖国爱军队完美地统一了起来
    
    请输入测试拼音:chu2 cai2 zheng4 bo1 gei3 liang3 qian1 san1 bai3 wan4 yuan2 jiao4 yu4 zi1 jin1 wai4 hai2 bo1 chu1 zhuan1 kuan3 si4 qian1 wu3 bai3 qi1 shi2 wan4 yuan2 xin1 jian4 zhong1 xiao3 xue2
    除财政拨给两千三百万元教太资金外还拨出专款四千五百七十万元新建中小学
    
    请输入测试拼音:ke3 shi4 chang2 chang2 you3 ren2 gao4 su4 yao2 xian1 sheng1 shuo1 kan4 jian4 er4 xiao3 jie3 zai4 ka1 fei1 guan3 li3 he2 wang2 jun4 ye4 wo4 zhe shou3 yi1 zuo4 zuo4 shang4 ji3 ge4 zhong1 tou2
    可是常常有人告诉姚先生说看见二小姐在咖啡馆里和王俊业握着族一坐坐上几个钟头
    

    transformer

    新增基于transformer结构的语言模型transformer.py,该模型已经被证明有强于其他框架的语言表达能力。

    建议使用transformer作为语言模型,该模型是自然语言处理这两年最火的模型,今年的bert就是使用的该结构。本文最近更新系统使用的语言模型就是transformer。

     the  0 th example.
    文本结果: lv4 shi4 yang2 chun1 yan1 jing3 da4 kuai4 wen2 zhang1 de di3 se4 si4 yue4 de lin2 luan2 geng4 shi4 lv4 de2 xian1 huo2 xiu4 mei4 shi1 yi4 ang4 ran2
    原文结果: lv4 shi4 yang2 chun1 yan1 jing3 da4 kuai4 wen2 zhang1 de di3 se4 si4 yue4 de lin2 luan2 geng4 shi4 lv4 de2 xian1 huo2 xiu4 mei4 shi1 yi4 ang4 ran2
    原文汉字: 绿是阳春烟景大块文章的底色四月的林峦更是绿得鲜活秀媚诗意盎然
    识别结果: 绿是阳春烟景大块文章的底色四月的林峦更是绿得鲜活秀媚诗意盎然
    
     the  1 th example.
    文本结果: ta1 jin3 ping2 yao1 bu4 de li4 liang4 zai4 yong3 dao4 shang4 xia4 fan1 teng2 yong3 dong4 she2 xing2 zhuang4 ru2 hai3 tun2 yi4 zhi2 yi3 yi1 tou2 de you1 shi4 ling3 xian1
    原文结果: ta1 jin3 ping2 yao1 bu4 de li4 liang4 zai4 yong3 dao4 shang4 xia4 fan1 teng2 yong3 dong4 she2 xing2 zhuang4 ru2 hai3 tun2 yi4 zhi2 yi3 yi1 tou2 de you1 shi4 ling3 xian1
    原文汉字: 他仅凭腰部的力量在泳道上下翻腾蛹动蛇行状如海豚一直以一头的优势领先
    识别结果: 他仅凭腰部的力量在泳道上下翻腾蛹动蛇行状如海豚一直以一头的优势领先
    
     the  2 th example.
    文本结果: pao4 yan3 da3 hao3 le zha4 yao4 zen3 me zhuang1 yue4 zheng4 cai2 yao3 le yao3 ya2 shu1 di4 tuo1 qu4 yi1 fu2 guang1 bang3 zi chong1 jin4 le shui3 cuan4 dong4
    原文结果: pao4 yan3 da3 hao3 le zha4 yao4 zen3 me zhuang1 yue4 zheng4 cai2 yao3 le yao3 ya2 shu1 di4 tuo1 qu4 yi1 fu2 guang1 bang3 zi chong1 jin4 le shui3 cuan4 dong4
    原文汉字: 炮眼打好了炸药怎么装岳正才咬了咬牙倏地脱去衣服光膀子冲进了水窜洞
    识别结果: 炮眼打好了炸药怎么装岳正才咬了咬牙倏地脱去衣服光膀子冲进了水窜洞
    

    3. 数据集

    数据集采用了目前我能找到的所有中文免费数据,包括:thchs-30、aishell、primewords、st-cmd四个数据集,训练集总计大约450个小时,在之前实验过程中,使用thchs-30+aishell+st-cmd数据集对DFCNN声学模型进行训练,以64batch_size训练。
    包括stc、primewords、Aishell、thchs30四个数据集,共计约430小时, 相关链接:http://www.openslr.org/resources.php

    Name train dev test
    aishell 120098 14326 7176
    primewords 40783 5046 5073
    thchs-30 10000 893 2495
    st-cmd 10000 600 2000

    数据标签整理在data路径下,其中primewords、st-cmd目前未区分训练集测试集。

    若需要使用所有数据集,只需解压到统一路径下,然后设置utils.py中datapath的路径即可。

    4. 配置

    本项目现已训练一个迷你的语音识别系统,将项目下载到本地上,下载thchs数据集并解压至data,运行test.py,不出意外能够进行识别,结果如下:

     the  0 th example.
    文本结果: lv4 shi4 yang2 chun1 yan1 jing3 da4 kuai4 wen2 zhang1 de di3 se4 si4 yue4 de lin2 luan2 geng4 shi4 lv4 de2 xian1 huo2 xiu4 mei4 shi1 yi4 ang4 ran2
    原文结果: lv4 shi4 yang2 chun1 yan1 jing3 da4 kuai4 wen2 zhang1 de di3 se4 si4 yue4 de lin2 luan2 geng4 shi4 lv4 de2 xian1 huo2 xiu4 mei4 shi1 yi4 ang4 ran2
    原文汉字: 绿是阳春烟景大块文章的底色四月的林峦更是绿得鲜活秀媚诗意盎然
    识别结果: 绿是阳春烟景大块文章的底色四月的林峦更是绿得鲜活秀媚诗意盎然
    

    若自己建立模型则需要删除现有模型,重新配置参数训练。

    与数据相关参数在utils.py中:

    • data_type: train, test, dev
    • data_path: 对应解压数据的路径
    • thchs30, aishell, prime, stcmd: 是否使用该数据集
    • batch_size: batch_size
    • data_length: 我自己做实验时写小一些看效果用的,正常使用设为None即可
    • shuffle:正常训练设为True,是否打乱训练顺序
    def data_hparams():
        params = tf.contrib.training.HParams(
            # vocab
            data_type = 'train',
            data_path = 'data/',
            thchs30 = True,
            aishell = True,
            prime = False,
            stcmd = False,
            batch_size = 1,
            data_length = None,
            shuffle = False)
          return params
    

    使用train.py文件进行模型的训练。

    声学模型可选cnn-ctc、gru-ctc,只需修改导入路径即可:

    from model_speech.cnn_ctc import Am, am_hparams

    from model_speech.gru_ctc import Am, am_hparams

    语言模型可选transformer和cbhg:

    from model_language.transformer import Lm, lm_hparams

    from model_language.cbhg import Lm, lm_hparams

    转载请注明出处:https://blog.csdn.net/chinatelecom08/article/details/82557715

    展开全文
  • 基于Python + Tensorflow + RNN,通过一个完整项目案例,系统学习语音识别系统的样本标注、模型训练和程序设计。
  • 五款免费开源的语音识别工具

    万次阅读 2018-03-23 15:41:51
    按:本文原作者 Cindi Thompson,美国德克萨斯大学奥斯汀分校(University of Texas at Austin)计算机科学博士,数据科学咨询公司硅谷数据科学...作为 SVDS 研究团队的成员,我们会经常接触各种不同的语音识别...

    按:本文原作者 Cindi Thompson,美国德克萨斯大学奥斯汀分校(University of Texas at Austin)计算机科学博士,数据科学咨询公司硅谷数据科学(Silicon Valley Data Science,SVDS)首席科学家,在机器学习、自然语言处理等领域具有丰富的学术研究和产业界从业经验。雷锋网编译。


    作为 SVDS 研究团队的成员,我们会经常接触各种不同的语音识别技术,也差不多见证了语音识别技术近几年的发展。直到几年之前,最先进的语音技术方案大多都是以语音为基础的(phonetic-based),包括发音模型(Pronunciation models),声学模型(Acoustic Modelling)和语言模型(Language Model)等。通常情况下,这些模型大多都是以隐马尔可夫模型(HMM)和 N-gram 模型为核心的。未来,我们希望以这些传统模型为基础,探索一些诸如与百度 Deep Speech 等最新的语音识别系统相结合的新技术。当然,目前互联网上可以找到许多针对这些基础模型进行解释、汇总的文章和资料,但针对它们之间的差别和特点展开阐述的却并不多。

    为此,我们对比了五款基于 HMM 和 N-gram 模型的语音识别工具:CMU Sphinx,Kaldi,HTK,Julius 和 ISIP。它们都是开源世界的顶级项目,与 Dragon 和 Cortana 等商业语音识别工具不同,这些开源、免费的工具可以为开发者提供更大的自由度以及更低的开发成本,因此在开发圈始终保持着强大的生命力。

    需要提前说明的是:以下分析大多来源于我们的主观经验,同时也参考了互联网上的其他信息。而且这篇文章也并非一个覆盖所有语音识别开源工具的汇总类文章,我们只是对比了其中五款相对更主流的产品。另外,HTK 并不是严格开源的,它的代码并不能重新组织发布,也不能用于商业用途。

    想知道更多语音识别工具的用户请点击以下链接,其中列出了几乎所有开源/非开源的语音识别工具,非常全面。

    https://en.wikipedia.org/wiki/List_of_speech_recognition_software 


      编程语言:

    根据你对不同编程语言的熟悉程度,你可能会更偏爱某一种工具。如上图所示,这里列出的五款工具中,除了 ISIP 只支持 C++ 之外,全都支持 Python。你可以直接在它们的官网找到不同语言对应的下载链接。不过,Python 版有可能并不会覆盖工具包的全部功能,有些功能还可能是为其他语言的特性单独设计的。另外值得注意的是,CMU Sphinx 还支持 Java、C 和其他更多语言。

      开发者活跃度:

    这里列出的五个项目均源于学术研究。

    从名字也能看出,CMU Sphinx 是一款源于卡内基梅隆大学的产品。它的研发历史大约可以追溯到 20 年前,目前在 GitHub 和 SourceForge 平台同步更新。在 GitHub 平台有 C 和 Java 两个版本,而且据说分别只有一个管理员维护。但在 SourceForge 平台却有 9 个管理员和十几个开发者。

    Kaldi 源于 2009 年的一场研讨会,代码目前在 GitHub 平台开源,共有 121 位贡献者。 

    HTK 始于 1989 年的剑桥大学,曾一度商业化,但目前又回归剑桥。如前所述 HTK 现在并不是一款严格意义的开源工具,而且更新缓慢(虽然它的最新版本更新于 2015 年 12 月,但前一个版本的更新时间却是 2009 年,中间隔了差不多 6 年时间)。

    Julius 始于 1997 年,最后一个主要版本更新于 2016 年 9 月,据称其 GitHub 平台有三名管理员维护。

    ISIP 是第一个比较先进的开源语音识别系统,起源于密西西比州。它主要在 1996 年到 1999 年之间研发,最后一个版本发布于 2011 年,在 GitHub 平台出现之前就已经停止更新了。


      社区活跃度:

    这一部分我们考察了上述五个工具的邮件和社区讨论情况。

    CMU Sphinx 的论坛讨论热烈,回帖积极。但其 SourceForge 和 GitHub 平台存在许多重复的 repository。相比之下,Kaldi 的用户则拥有更多交互方式,包括邮件、论坛和 GitHub repository 等。HTK 有邮件列表,但没有公开的 repository。Julius 官网上的论坛链接目前已经不可用,其日本官网上可能有更详细的信息。ISIP 主要用于教育目的,其邮件列表目前已不可用。

      教程和示例:

    CMU Sphinx 的文档简单易读,讲解深入浅出,且贴近实践操作。

    Kaldi 的文档覆盖也很全面,但是在我看来更难理解。而且,Kaldi 同时包括了语音识别解决方案中的语音和深度学习方法。

    如果你并不熟悉语音识别,那么可以通过对 HTK 官方文档(注册后可以使用)的学习对该领域有一个概括的认识。同时,HTK 的文档还适用于实际产品设计和使用等场景。

    Julius 专注于日语,其最新的文档也是日语,但团队正在积极推动英文版的发布。

    以下链接提供了一些基于 Julius 的语音识别样例。

    https://github.com/julius-speech/dictation-kit 

    最后是 ISIP,虽然它也有一些文档,但是并不系统。

      预训练模型:

    即使你使用这些开源工具的主要目的是想要学习如何去训练一个专业的语音识别模型,但一个开箱即用的预先训练好的模型仍然是一个不可忽略的优点。

    CMU Sphinx 包括英语、法语、西班牙语和意大利语在内的诸多可以直接使用的模型,详情可以参考它的说明文档。

    Kaldi对现有模型进行解码的指令深藏在文档中,不太容易找到,但我们仍然发现了贡献者在 egs/voxforge 子目录下基于英文 VoxForge 语料库训练好的一个模型,并且还可以通过 online-data 子目录下的一个脚本直接运行。详情可以参考 Kaldi 项目的 repository。

    我们没有深入挖掘其他三个软件包的模型训练情况,但它们应该至少包含一些简单可用的预训练模型,而且与 VoxForge 兼容(VoxForge 是一个非常活跃的众包语音识别数据库和经过训练的模型库)。

    展开全文
  • 语音识别-特征提取 (一)

    万次阅读 2018-01-26 10:53:06
    语音的产生简介 1.1 发音器官  人体的语音是由人体的发音器官在大脑的控制下做生理运动产生的。人体发音器官由三部分组成:肺和气管、喉、声道。 肺是语音产生的能源所在。气管连接着肺和喉,是肺与声道的...

    一.语音的产生简介

    1.1   发音器官

        人体的语音是由人体的发音器官在大脑的控制下做生理运动产生的。人体发音器官由三部分组成:肺和气管、喉、声道。 肺是语音产生的能源所在。气管连接着肺和喉,是肺与声道的联系通道。喉是由一个软骨和肌肉组成的复杂系统,其中包含着重要的发音器官——声带。声带为产生语音提供主要的激励源。声道是指声门(喉)至嘴唇的所有发音器官,包括咽喉、口腔和鼻腔。

    1.2   语音的产生

        语音是声音的一种,是由人的发声器官发出,具有一定语法和意义的声音。大脑对发音器官发出运动神经指令,控制发音器官各种肌肉运动从而振动空气从而形成。


        空气由肺进入喉部,经过声带激励,进入声道,最后通过嘴唇辐射形成语音。

    1.3   语音信号的数字模型

     

     

                                                                 语音信号产生的时域模型

                         如图:语音信号的数字模型由三个部分组成,激励模型、声道模型、辐射模型。

                                    语音信号S(z)=U(z)·G(z)·R(z)。

                   激励模型:发浊音时声带的不断开启和关闭将产生间歇的脉冲波。这个脉冲波类似于斜三角形脉冲串。如下图所示:


                                                            单个斜三角形波及其频谱

              发清音时,可等效成随机白噪声。

             声道模型:声道部分的数学模型目前有两种观点,一种是将声道视为多个不同截面积的管子串联而形成的系统,即“声管模型”,另一种是将声道视为一个谐振腔,即“共振峰模型”。

            辐射模型:辐射模型表征口和唇的辐射效应和圆形头部的绕射效应。

    二:一些基本名词简介

      音素:语音中最小的基本单位是音素,音素是人类能区别一个单词和另一个单词的基础。音素构成音节,音节又构成不同的词和短语。音素又分为元音和辅音。

      元音:元音,又称母音,是音素的一种,与辅音相对。元音是在发音过程中由气流通过口腔而不受阻碍发出的音。不同的元音是由口腔不同的形状造成的。(元音和共振峰关系密切)

      辅音:气流在口腔或咽头受到阻碍而形成的音叫做辅音,又叫子音。不同的辅音是由发音部位和发音方法的不同造成的。

      清音:清音和浊音的概念在文献中涉及较多。严格来讲,很多特征的提取都需要区分清音和浊音。当气流通过声门时,如果声道中某处面积很小,气流高速冲过此处时产生湍流,当气流速度与横截面积之比大于某个临界速度便产生摩擦音,即清音。简单来说,发清音时声带不振动,因此清音没有周期性。清音由空气摩擦产生,在分析研究时等效为噪声。

      浊音:语音学中,将发音时声带振动的产生音称为浊音。辅音有清有浊,而多数语言中的元音均为浊音。浊音具有周期性。

    发清音时声带完全舒展,发浊音时声带紧绷在气流作用下作周期性动作

    三:语音特征

       3.1.声强和声强级

       在物理学中,把单位时间内通过垂直于声波传播方向的单位面积的平均声能,称为声强。声强用I表示,单位为瓦/平米。实验的研究表明,人对声音强弱的感觉并不是与声强成正比,而是与其对数成正比的。所以一般声强用声强级来表示。

                                                          SIL=10lg[I/I’]=10lg(I/I’)

      式中I为声强,I’=10e-12瓦/平米称为基准声强,声强级的常用单位是分贝(dB)。

    3.2.响度

       响度时一种主观心理量,是人类主观感觉到的声音强弱程度。一般来说,声音频率一定时,声强越强,响度也越大。但是响度与频率有关,相同的声强,频率不同时,响度也可能不同。响度若用对数值表示,即为响度级,响度级的单位定义为方,符号为phon。根据国际协议规定,0dB声级的1000Hz纯音的响度级定义为0 phon,n dB声级的1000Hz纯音的响度级就是n phon。其它频率的声级与响度级的对应关系要从等响度曲线查出。


                                                等响度曲线与声强级的关系

    3.3.音高

      音高也是一种主观心理量,是人类听觉系统对于声音频率高低的感觉。音高的单位是美尔(Mel)。响度级为40 phon,频率为1000Hz的声音的音高定义为1000Mel。

               

                                                         主观音高与实际频率的关系

    3.4基音周期和基音频率

    3.4.1 基音周期的概念

          人在发音时,声带振动产生浊音(清音由空气摩擦产生)。浊音的发音过程是:来自肺部的气流冲击声门,造成声门的一张一合,形成一系列准周期的气流脉冲,经过声道(含口腔、鼻腔)的谐振及唇齿辐射最终形成语音信号。故浊音波形呈现一定的准周期性。所谓基音周期,就是对这种准周期而言的。它反映了声门相邻两次开闭之间的时间间隔或开闭的频率。

         基音周期是语音信号最重要的参数之一,它描述了语音激励源的一个重要特征。基音周期信息在语音识别、说话人识别、语音分析与语音合成,以及低码率语音编码、发音系统疾病诊断、听觉残障者的语言指导等多个领域有着广泛的应用。(因为女性基频比男性高,所以有些算法中使用基频来区分性别,还挺准的)

    3.4.2基音周期的估算方法

        基音周期的估算方法很多,比较常用的有自相关法,倒谱法(我们提基频用的倒谱法),平均幅度差函数法,线性预测法,小波—自相关函数法,谱减—自相关函数法等。下面简单介绍用自相关法提取基频。

    预处理:

          为了提高基音检测的可靠性,有人提出了端点检测和带通数字滤波器两种预处理方法对原始信号进行预处理。在提取基频时端点检测比一般端点检测更为严格(一般端点检测会保留语音有话段的头和尾,以避免把有用信息当作噪声滤除,但头和尾不包括基频信息,所以在进行提取基音的端点检测时阈值设定更为严格,滤去头部和尾部)。用带通滤波器预处理的目的是为了防止共振峰第一峰值的干扰,一般带通滤波器的频率范围选为60~500Hz。

                                                                                下图给出青年男女的基频范围图:


    自相关法:

            短时自相关函数的定义为 其中k是时间的延迟量,N为帧长,短时自相关函数具有以下重要性质。若当原信号具有周期性,那么它的自相关函数也具有周期性,并且周期性与原信号的周期相同。且在K等于周期整数倍时会出现峰值。清音信号无周期性,它的自相关函数会随着K的增大呈衰减趋势,浊音具有周期性,它的R(k)在基因周期整数倍上具有峰值,通常取第一最大峰值点作为基因周期点。自相关函数法基音检测正是利用这一性质来进行基因周期检查的。

    3.5信噪比

    定义:

       信噪比的计量单位是dB,其计算方法是10lg(PS/PN),其中PS和PN分别代表信号和噪声的功率(用能量也是一样的)。

    计算方法:


        在噪声和语音完全混杂的情况下信噪比很难计算,在预知噪声的情况下,可以用实际信号(纯语音+噪声)减去噪声,得到近似的纯语音信号。从而通过进一步计算求得信噪比。

        我们在实验中所采集的信号信噪比低时在10几dB,信噪比高时在30dB以上。

     

    以下4个特征为医学中常用的检查嗓部病变的特征。

    3.6谐噪比:

        HNR(Harmonics-to-Noise ratio)是语音中谐波成分和噪声成分的比率。是检测病态嗓音和评价嗓音素质的一个客观指标,能有效地反应声门闭合情况。需要注意的是这里的噪声不是环境噪声,而是发声时由于声门非完全关闭引起的声门噪声。

    3.7频率微扰(jitter)

       频率微扰是描述相邻周期之间声波基本频率变化的物理量。主要反映粗糙声程度,其次反映嘶哑声程度。

    语音信号中的频率微扰与声门区的功能状态是一致的。正常嗓音周期间的频率相同者较多,不同者甚少,因此频率微扰值很小。当发生声带病变时,微扰值增大,使声音粗糙。

    3.8振幅微扰(shimmer)

       振幅微扰描述相邻周期之间声波幅度的变化,主要反映嘶哑声程度。Jitter和shimmer共同反映声带振动的稳定性,其值越小说明在发声过程中声学信号出现的微小变化越少。

    3.9规范化噪声能量(NNE)

       主要计算发声时由于声门非完全关闭引起的声门噪声的能量。主要反映气息声程度,其次是嘶哑声程度,一定程度上反映声门的关闭程度,对由于声带器质性或功能性病变而产生的病理嗓音的分析很有价值。

     

    3.10梅尔倒谱系数(Mel-scale Frequency CepstralCoefficients, MFCC)

    3.10.1基本概念:

       在语音识别(Speech Recognition)和话者识别(Speaker Recognition)方面,最常用到的语音特征就是梅尔倒谱系数。梅尔倒谱系数是在Mel标度频率域提取出来的倒谱参数,Mel标度描述了人耳频率的非线性特性,它与频率的关系可用下式近似表示:

    式中f为频率,单位为Hz。

                                                             下图给出Mel频率与线性频率的关系。

                     

                                                           Mel频率和线性频率的关系

    3.10.2计算方法:

    基本步骤:

                              

                                                                      计算倒谱的流程图

    1.预加重

       预加重处理其实是将语音信号通过一个高通滤波器:

       式中μ的值介于0.9-1.0之间,我们通常取0.96。预加重的目的是提升高频部分,使信号的频谱变得平坦,移除频谱倾斜,来补偿语音信号受到发音系统所抑制的高频部分。同时,也是为了消除发生过程中声带和嘴唇的效应。(因为口唇辐射可以等效为一个一阶零点模型)

     2.分帧、加窗,快速傅里叶变换

        因为语音信号为短时平稳信号,所以需要进行分帧处理,以便把每一帧当成平稳信号处理。同时为了减少帧与帧之间的变化,相邻帧之间取重叠。一般帧长取25ms,帧移取帧长的一半。

    3.Mel滤波器组

    在语音的频谱范围内设置若干带通滤波器 ,M为滤波器的个数。每个滤波器具有三角形滤波器的特性,其中心频率为 ,在Mel频谱范围内,这些滤波器是等带宽的。每个带通滤波器的传递函数为:


    其中: 


    三角带通滤波器有两个主要目的:

        对频谱进行平滑化,并消除谐波的作用。此外还可以减少运算量。

       在MATLAB的voicebox工具箱中有melbankm函数可用于计算Mel滤波器组。


                                                                 三角形滤波器的示意图

    4.计算每个滤波器组输出的对数能量为:


    5.经离散余弦变换(DCT)得到MFCC系数:


    将上述的对数能量带入离散余弦变换,求出L阶的Mel-scale Cepstrum参数。L阶指MFCC系数阶数,通常取12-16。这里M是三角滤波器个数。

    以下两个特征为能量特征:

    3.11短时能量

           计算第i帧语音信号 的短时能量的公式为

                                                                         

                                                                      

                                                                                                                  计算一帧语音信号的短时能量

          短时能量的计算方法比较简单,即取一帧信号,通过短时能量计算公式计算即可。

    3.1.2短时平均幅度

         语音信号的短时平均幅度定义为:


          短时平均幅度也是一帧语音信号能量大小的表征,它与短时能量的区别在于计算时不论采样值的大小,不会因为取二次方而造成较大的差异,在某些应用领域中会带来一些好处。

          短时能量和短时平均幅度的有作用主要是:作为区分清浊音,区分声母韵母,区分有话段和无话段的指标。

    3.13短时平均过零率

          短时平均过零率表示一帧语音中语音信号波形穿过横轴(零电平)的次数。

    其计算公式为:


    由于浊音具有较低的过零率而清音具有较高的过零率,过零率可以用来区分清音和浊音,在端点检查中有一定的运用。

    3.14共振峰

    基本概念:

            共振峰是指在声音的频谱中能量相对集中的一些区域,共振峰不但是音质的决定因素,而且反映了声道(共振腔)的物理特征。声音在经过共振腔时,受到腔体的滤波作用,使得频域中不同频率的能量重新分配,一部分因为共振腔的共振作用得到强化,另一部分则受到衰减。由于能量分布不均匀,强的部分犹如山峰一般,故而称之为共振峰。在语音声学中,共振峰决定着元音的音质

            共振峰是表征语音信号特征的基本参数之一。它在语音信号合成、语音识别和语音编码等方面起着重要作用。共振峰可以等效为声道系统函数的复极点对,由于人的声道平均长度为17cm,而语音信号的能量主要集中在0-5kHz。因此语音通常包含4到5个稳定的共振峰,一般只需要研究前三个共振峰。


                                                                                            共振峰的一个示意图

          从图中可以看到:1语音信号的能量在频率上存在频谱倾斜;2共振峰位置与谱包络位置很一致(这也是谱包络法提取共振峰的原理)

                          

                                                          普通话10个元音共振峰均值数据表(Hz)

    提取方法:

       共振峰的提取方法较多,比较常见的有谱包络法、倒谱法、LPC内插法、LPC求根法、希尔伯特变换法等,但以上方法都或多或少受,虚假峰值,共振峰合并,高音调语音(尤其是女性)的影响,针对单个元音以上方法可以较好的找到共振峰,但对于连续语音准确度较差。在噪声背景下不具有很好的鲁棒性。下面简单介绍一种针对连续变化语音的鲁棒性较好的共振峰追踪算法。

                     

                                                                                                          算法示意图

          传统的共振峰提取方法都是基于谱分析和峰值检测技术。这些方法对于噪声背景下共振峰的检测,既不准确又不鲁棒。图示这种基于预滤波的方法,在进行谱峰检测之前对每一个共振峰使用一个时变的自适应滤波器进行预滤波。预滤波限制了每个共振峰的频谱范围,因此减小了相邻峰值之间的干扰和背景噪声的干扰。

        首先进行预加重,原因和MFCC中提到的相同,都是为了移除频谱倾斜。

        第二步是进行希尔伯特变换,得到原实值信号的解析信号,便于分析计算。

       第三部分是四个自适应共振峰滤波器。每个滤波器由一个全零点滤波器和一个单极点的动态追踪滤波器组成。这个滤波器的作用是在对每一个共振峰值进行估算之前,对其进行动态滤波,抑制相邻共振峰的干扰和基频干扰。

        第四部分包括清浊音检测,性别检测(根据基频),能量检测。性别检测的目的是针对男女共振峰的差异性给定不同的滤波初值。能量检测是为了滤除无话段,类似于端点检查,清浊音检测是为了滤除清音,因为清音不含共振峰。

       最后通过移动平均值作决策,符合条件的值作为共振峰估计值保留,不符合条件的值用其移动平均值代替。

      

          上图是文章给出的共振峰估计和实际共振峰的图形。该方法比之前我们采用的倒谱法和LPC法的准确度都要高,但其计算复杂度较高,算起来太慢了。

        共振峰参考文献:Robust Formant Tracking for Continuous

    SpeechWith Speaker Variability

    3.15 声门波

    按语言产生的线性模型, 语言信号的频谱为:

      (式一)

    其中 是声门波的频谱, 是声道脉冲响应的频谱, 是口唇辐射效应的频谱。在语音信号的分析工作中,语音分析的一个主要任务是从信号中获得声道响应的频谱。口唇辐射的影响比较小, 容易作理论估计, 而声门波的频谱的关系比较复杂, 影响也较大。(以上是说为了得到准确的声道响应需要估计声门响应,这也是一些文献研究声门波的目的)。文献指出,声门波蕴含一定情感信息,对压力分类有一定作用。

    下图给出一个声门波的模型:


                                                (可以看到这个和我之前给出的激励模型相似)

    声门波的计算方法:

    由式一可知,声门    (式二)

          由于口唇辐射容易估计,所以计算声门波的难点在于把声门响应和声道响应区分开。在closed phase,即图中C区时,声门和声道之间的影响是最小的。这时候分析声道参数时最合适的。这就需要从动态的声信号中找到声门闭合的瞬间(也就是closed phase),很多研究者通过动态算法,声门输入能量,共振峰稳定性,残余能量来寻找声门的闭合瞬间。然而受到讲话方式(比如压力状况下声门闭合时间会变短等)和性别的影响(女性讲话基频比男性更高,声门动作更快,声门并不总是完成闭合),上述方法都很难准确找到声门的闭合相。实际医学中一般用EGG(舌动电流描记器)等其它外部传感器来观察close phase,从而得到准确的声门估计。

         下面给出moore提出的一种声门波算法。

         该算法中把口唇辐射可以等效为一个一阶零点模型。声道响应用全极点模型来等效。根据式二,声门的估计可以又声门反滤波得到。

                                

                                                                                  Moore提出的算法图示

    1: 为输入,表示一帧信号,其长度为4-5个基音周期。

    2:对原始信号进行P阶基音同步的线性预测分析,得到一组c初始的LPC参数(ap),用来产生残差信号,A(z)

    3:找到残差信号的负峰值。它的负峰值的位置对应这声门波出现最大负斜率的位置。closed phase一般在这个位置附近。峰值位置被作为迭代的中点,而迭代的起点用峰值位置减去LPC阶数P得到。从c起取2P长度,做基于协方差的LPC,得到A(z)


                                                      步骤3的一个示意图

       4: 将glottal derivative(gldv)和线性预测分析的参数存储在矩阵中。进行迭代,迭代次数为2P。

      5:后处理过程。

    声门参考文献:ALGORITHM FOR AUTOMATIC GLOTTALWAVEFORM ESTIMATIONWITHOUT THE RELIANCE ON PRECISE GLOTTAL CLOSURE INFORMATION

    展开全文
  • 走进语音识别中的WFST(一)

    万次阅读 多人点赞 2016-03-13 19:26:50
    本人最近在研究语音识别的生成Graph和Lattice的模块,其中用到了WFST这个概念,惊叹于它的神奇也被它的复杂搞得晕头转向。于是决定静下心来仔细研读了Mohri大牛的Speech Recognition with Weighted Finite-state ...
  • 最近研究语音识别,我说的语音识别不包括语意的识别,是针对说话人的识别, 即利用语音进行身份认证,说话人识别力求将语音信号中语意信息平均化,突出个性。 但不论是何种第一步所需要做的工作是获得语音中包含的...
  • 语音识别概述

    万次阅读 2020-04-20 15:08:19
    语音识别概述语音识别问题就是模式分类问题。 一个基本的语音识别系统如下图,实现是正常工作流程,虚线是训练模式分类问题中的模板(这里就是声学模型,字典和语言模型)。 图1语音识别系统组件关系图 ...
  • 语音识别

    万次阅读 2017-10-28 17:09:34
    语音识别 语音识别主流开源框架:HTK、Kaldi、CMUSphinx。 因为目前只接触了Sphinx,对于另外两个框架没有太深入研究。 Kaldi适用于在服务器搭建的语音识别系统,也可以适用于android,但没有实验过,根据官方提供...
  • 语音识别是十年来发展最快的技术之一,随着AI的不断发展,深度学习让语音识别技术得到了质的飞跃,开始从实验室走向市场,并逐步走到人们的生活中。 我们现在所用的语音输入法,以及以语音为智能交互入口的智能家居...
  • 语音识别基本流程

    万次阅读 多人点赞 2018-02-24 14:17:09
    所谓语音识别,就是将一段语音信号转换成相对应的文本信息,系统主要包含特征提取、声学模型,语言模型以及字典与解码四大部分,此外为了更有效地提取特征往往还需要对所采集到的声音信号进行滤波、分帧等音频数据...
  • 中文语音识别pytorch

    万次阅读 2020-04-11 17:35:26
    https://github.com/libai3/masr
  • 语音识别之Python开发

    万次阅读 多人点赞 2017-12-18 05:43:39
    语音识别之Python教程概述技术原理教程开发案例参考案例python实现将文本转换成语音的方法Python如何实现文本转语音Python3.5 调用讯飞动态链接库实现语音识别Python建立简易语音识别系统Python 语音识别框架用...
  • 语音识别、声纹识别的区别及测试

    万次阅读 多人点赞 2018-09-02 22:15:45
    很多除接触AI的小伙伴, 不清楚语音识别和声纹识别的区别,经常混淆概念,以为语音识别、声纹识别、语义识别是同一回事,其实不然。这篇文章主要为小伙伴普及一下这三者的区别, 并且分别讲一讲如何测试。   语音...
  • ASR自动语音识别技术

    万次阅读 2016-07-24 22:51:19
    自动语音识别技术(Automatic Speech Recognition)是一种将人的语音转换为文本的技术。语音识别是一个多学科交叉的领域,它与声学、语音学、语言学、数字信号处理理论、信息论、计算机科学等众多学科紧密相连。...
  • 语音识别评估标准-WER

    万次阅读 2017-02-24 11:05:30
    语音识别评估标准-WER
  • 通过微信小程序wx.startRecord()和wx.stopRecord()接口录音并上传silk录音文件至服务器,通过ffmpeg将silk录音文件转成wav录音文件,再通过百度语音识别 REST API 获取语音识别后的结果。
  • 离线进行谷歌的语音识别
  • kaldi上第一个免费的中文语音识别例子

    万次阅读 多人点赞 2016-02-04 12:46:09
    今天在清华大学cslt实验室王东老师的分享下,kaldi终于有了免费的中文语音识别的例子,网址为:https://github.com/kaldi-asr/kaldi/tree/master/egs/thchs30。各位可以根据这个来训练自己的模型。 再次谢谢王东...
  • 教你如何在树莓派上搭建语音识别服务

    万次阅读 多人点赞 2019-09-25 19:26:09
    最近项目原因需要我完成一个在树莓派上的离线语音识别,忙活了近一周,起初用了开源的PocketSphinx,但是不得不说,识别率低的惊人,甚至可以说有些字词根本没法识别,除非你自己制作声学模型,不然这玩意儿就是个...
1 2 3 4 5 ... 20
收藏数 116,007
精华内容 46,402
关键字:

语音识别