2019-07-31 09:55:17 thinktothings 阅读数 858
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    5905 人正在学习 去看看 杨波

在线对比

https://aismartvip.com/voice/pk/billing/index

百度阿里语音识别对比

  百度 阿里

格式支持

pcm(不压缩)

wav(不压缩,pcm编码)

amr(压缩格式)

pcm(无压缩的pcm文件或wav文件)

 

Opus

mono

支持语言

中文,英文,粤语,四川话

中文,英文,湖北话,四川话

并发

普通版QPS:2,每秒请求2

       极速版QPS:50,每秒请求50

试用并发:2

商用并发:200

采样率

固定16k 采样率

8000Hz16000Hz

      计费方式          按次计费          按将计费,按时长计费
      时长限制  短语音60秒内,长语音实测超20分钟很容易自动中断,失败率很高 短语音60秒内,
      文件大小限制   录音文件512MB
     自动加标点符号 支持 支持
      时间戳 只有linux支持,超过20分钟时长,自动中断频率很高 支持,精确到每个字或单词的时间戳

 

 

 

 

 

 

 

 

 

 

 

 

 

百度极速版价格

月调用量(万次) 语音识别极速版(元/次)
0<调用次数<=600 0.0042
600<调用次数<=3000 0.0036
3000<调用次数<=6000 0.0029
6000<调用次数<=15000 0.0019
15000<调用次数 0.0014

百度普通版qps价格

QPS购买方式 单价(元)
1QPS/天 80
1QPS/月 1400

阿里调用方式

一句话识别,实时语音识别,录音文件识别

阿里计费方式和报价(预付费方式)

æ°é¢ä»è´¹æ¥ä»·

阿里计费方式和报价(后付费方式)

åä»è´¹æ¹å¼

阿里百度语音识别实测结果

百度阿里语音识别对比

bilibli视频评测: https://www.bilibili.com/video/av61302199

爱奇艺视频评测: https://www.iqiyi.com/v_19rrp089ss.html

统计

  百度 百度极速版 阿里
统计字个数 396 396 396
错误字个数 9 25 26
错误率 6.31% 6.56% 2.27%
       

说明:单一案例数据不能完全反映识别率,但在一定程度上可以反应识别率的高低,以及数据适用广度

详细记录

行号 开始时间 结束时间 时长(秒) 字幕   错误字数 字个数
1 0:00:01.500 0:00:03.930 2.43 (百度)    不爱刷牙的小狮子   0    
(百度极速版)    不爱刷牙的小狮子   0    
(阿里)    不爱刷牙的小狮子   0    
        (人工)    不爱刷牙的小狮子       8
                 
2 0:00:04.350 0:00:09.330 4.98 (百度)    小狮子不讲卫生,不爱刷牙,他的嘴巴越来越臭   0    
        (百度极速版)    小狮子不讲卫生,不爱刷牙,他的嘴巴越来越臭   0    
        (阿里)    小狮子不讲卫生,不爱刷牙,他的嘴巴越来越臭   0    
        (人工)    小狮子不讲卫生,不爱刷牙,他的嘴巴越来越臭       19
                 
3 0:00:09.420 0:00:12.000 2.58 (百度)    有一天,小狮子来找小熊玩   0    
(百度极速版)    有一天,小狮子来找小熊玩   0    
(阿里)    有一天,小狮子来找小熊玩   0    
        (人工)    有一天,小狮子来找小熊玩       11
                 
4 0:00:12.030 0:00:14.970 2.94 (百度)    刚开口说枭雄   4    
(百度极速版)    刚开口说枭雄   4    
(阿里)    他刚开口说,小熊,我   0    
        (人工)    他刚开口说,小熊,我       8
                 
5 0:00:15.540  0:00:19.170 3.63 (百度)    还没说完呢,只听小熊说了句什么吗?   1    
(百度极速版)    话还没说完呢,只听小熊说了句什么味儿   1    
(阿里)    包还没说完呢?只听小熊说了句什么味   1    
        (人工)    话还没说完呢?只听小熊说了句什么味       16
                 
6 0:00:19.380 0:00:21.840 2.46 (百度)    接着扑通一声倒在了地上   0    
(百度极速版)    接着扑通一声倒在了地上   0    
(阿里)    接着扑通一声倒在了地上   0    
        (人工)    接着扑通一声倒在了地上       11
                 
7 0:00:21.990 0:00:25.470 3.48 (百度)    小兔,我们小狮子看了小兔子过来   0    
(百度极速版)    小兔,我们小狮子看了小兔子过来   0    
(阿里)    小兔,我们小狮子看了小兔,走过来   0    
        (人工)    小兔,我们小狮子看了小兔,走过来       14
                 
8 0:00:25.560 0:00:27.780 2.22 (百度)    想好的想和她一起玩   2    
(百度极速版)    想好的想和她一起玩   2    
(阿里)    想,很想和他一起玩   1    
        (人工)    想,想和他一起玩       7
                 
9 0:00:27.840 0:00:31.560 3.72 (百度)    话还没说完呢,小兔头晕晕的说了句   0    
(百度极速版)    他话还没说完呢,小兔头晕晕的说了句   0    
(阿里)    他话还没说完呢?小兔头晕晕的,说了句   0    
        (人工)    他话还没说完呢?小兔头晕晕的,说了句       16
                 
10 0:00:31.710 0:00:35.310 3.6 (百度)    好臭,接着也不通一声倒在了地上   0    
(百度极速版)    好臭,接着也不通一声倒在了地上   0    
(阿里)    好臭,接着也扑通一声,倒在了地上   0    
        (人工)    好臭,接着也扑通一声,倒在了地上       14
                 
11 0:00:35.370 0:00:37.350 1.98 (百度)    小狮子呆呆的看着   0    
(百度极速版)    小狮子呆呆的看着   0    
(阿里)    小狮子呆呆地看着   0    
        (人工)    小狮子呆呆地看着       8
                 
12 0:00:37.410 0:00:38.250 0.84 (百度)    不久   0    
(百度极速版)    ERROR_3301_speech quality error._{"err_msg":"speech quality error.","sn":"789471505981564379425","err_no":3301}_app_id_16038894_qps_200_ACCOUNT_BILLING_1   1    
(阿里)    不久   0    
        (人工)    不久       2
                 
13 0:00:38.310 0:00:43.620 5.31 (百度)    小象甩着鼻子走过来,小狮子张开嘴巴对小象说   4    
(百度极速版)    小象甩着鼻子走过来,小狮子张开嘴巴对小象说   4    
(阿里)    小象甩着鼻子走过来,小狮子张开嘴巴对小象说,小夏,我们   1    
        (人工)    小象甩着鼻子走过来,小狮子张开嘴巴对小象说,小象,我们       24
                 
14 0:00:43.620 0:00:44.520 0.9 (百度)    来玩   0    
(百度极速版)    来玩   0    
(阿里)    来玩   0    
        (人工)    来玩       2
                 
15 0:00:44.880 0:00:47.430 2.55 (百度)    好难闻的气味   0    
(百度极速版)    好难闻的气味   0    
(阿里)    好难闻的气味儿啊   0    
        (人工)    好难闻的气味儿啊       8
                 
16 0:00:47.880 0:00:49.860 1.98 (百度)    小向打了个大喷嚏   1    
(百度极速版)    小向打了个大喷嚏   1    
(阿里)    小象打了个大喷嚏   0    
        (人工)    小象打了个大喷嚏       8
                 
17 0:00:49.890 0:00:52.800 2.91 (百度)    接着也摇摇晃晃的倒在了地上   0    
(百度极速版)    接着也摇摇晃晃的倒在了地上   0    
(阿里)    接着也摇摇晃晃地倒在了地上   0    
        (人工)    接着也摇摇晃晃地倒在了地上       13
                 
18 0:00:53.130 0:00:57.330 4.2 (百度)    小狮子没有找到一个朋友玩儿,他闷闷不乐地回到家   0    
        (百度极速版)    小狮子没有找到一个朋友玩儿,他闷闷不乐地回到家   0    
        (阿里)    小狮子没有找到一个朋友玩,他闷闷不乐的回到家   0    
        (人工)    小狮子没有找到一个朋友玩,他闷闷不乐的回到家       21
                 
19 0:00:57.330 0:00:57.330 2.97 (百度)    这时,他看到出远门的爸爸回来了   0    
(百度极速版)    这时,他看到出远门的爸爸回来了   0    
(阿里)    这时,他看到出远门的爸爸回来了   0    
        (人工)    这时,他看到出远门的爸爸回来了       14
                 
20 0:01:00.330 0:01:03.030 2.7 (百度)    小狮子张嘴巴高高兴兴的哈   1    
(百度极速版)    小狮子张嘴巴高高兴兴的哈   1    
(阿里)    小狮子张嘴巴高高兴兴的喊   0    
        (人工)    小狮子张嘴巴高高兴兴的喊       12
                 
21 0:01:03.510 0:01:04.110 0.6 (百度)    ERROR_3301_speech quality error._{"err_msg":"speech quality error.","sn":"128211790751564379419","err_no":3301}_app_id_16038875_qps_100_ACCOUNT_FREE_100   1    
(百度极速版)    ERROR_3301_speech quality error._{"err_msg":"speech quality error.","sn":"640301391711564379425","err_no":3301}_app_id_16038894_qps_200_ACCOUNT_BILLING_1   1    
(阿里)    爸   0    
        (人工)           1
                 
22 0:01:04.319 0:01:09.630 5.311 (百度)    爸爸突然把鼻子捂住,向后退,他对小事的说天呐,多久没说   4    
(百度极速版)    爸爸突然把鼻子捂住,向后退,他对小事的说天呐,多久没说   4    
(阿里)    爸爸突然把鼻子捂住向后退,他对小狮子说天呐,你多久没摔   1    
        (人工)    爸爸突然把鼻子捂住向后退,他对小狮子说天呐,你多久没刷        
                 
23 0:01:09.630 0:01:14.940  5.31 (百度)    小狮子拿到脖子上的毛,不好意思地说好像   2    
(百度极速版)    小狮子拿到脖子上的毛,不好意思地说好像   2    
(阿里)    刷牙了,小狮子拿到脖子上的毛不好意思地说,好像   2    
        (人工)    刷牙了,小狮子挠挠脖子上的毛不好意思地说,好像   0   21
            0    
24 0:01:15.150 0:01:16.620 1.47 (百度)    好像两个星期   0    
(百度极速版)    好像两个星期   0    
(阿里)    好像两个星期   0    
        (人工)    好像两个星期   0   6
            0    
25 0:01:17.010 0:01:17.760 0.75 (百度)    爸爸   0    
(百度极速版)    爸爸   0    
(阿里)    爸爸   0    
        (人工)    爸爸   0   2
            0    
26 0:01:17.790 0:01:22.620 4.83 (百度)    急忙给小狮子找出牙刷和牙膏,让他仔细刷牙   0    
(百度极速版)    急忙给小狮子找出牙刷和牙膏,让他仔细刷牙   0    
(阿里)    急忙给小狮子找出牙刷和牙膏,让他仔细刷牙   0    
        (人工)    急忙给小狮子找出牙刷和牙膏,让他仔细刷牙       19
                 
27 0:01:22.680 0:01:23.580 0.9 (百度)    一会儿   1    
(百度极速版)    一会儿   1    
(阿里)    坐一会儿   1    
        (人工)    不一会儿       4
                 
28 0:01:23.610 0:01:27.540 3.93 (百度)    狮子把牙齿刷干净了,她的嘴巴一点都不抽了   2    
(百度极速版)    狮子把牙齿刷干净了,她的嘴巴一点都不抽了   2    
(阿里)    小狮子把牙齿刷干净了,他的嘴巴一点都不抽了   1    
        (人工)    小狮子把牙齿刷干净了,他的嘴巴一点都不臭了       20
                 
29 0:01:27.690 0:01:30.450 2.76 (百度)    狮子,把今天的经历说给爸爸听   1    
(百度极速版)    狮子,把今天的经历说给爸爸听   1    
(阿里)    小狮子把今天的经历说给爸爸听   0    
        (人工)    小狮子把今天的经历说给爸爸听       14
                 
30 0:01:30.570  0:01:31.290 0.72 (百度)    宝贝   0    
(百度极速版)    宝贝   0    
(阿里)    宝贝   0    
        (人工)    宝贝       2
                 
31 0:01:31.530 0:01:35.610 4.08 (百度)    以后你一定要早晚按时刷牙,不然嘴巴臭臭的   0    
(百度极速版)    以后你一定要早晚20刷牙,不然嘴巴臭臭的   0    
(阿里)    以后,你一定要早晚按时刷牙,不然,嘴巴臭臭的   0    
        (人工)    以后,你一定要早晚按时刷牙,不然,嘴巴臭臭的       19
                 
32 0:01:35.670 0:01:37.620 1.95 (百度)    都不爱和你玩儿啊!   0    
(百度极速版)    都不爱和你玩儿啊!   0    
(阿里)    小伙伴都不爱,可你玩啊   0    
        (人工)    小伙伴都不爱,和你玩啊       10
                 
33 0:01:37.800 0:01:39.300 1.5 (百度)    爸爸对小狮子说   0    
(百度极速版)    爸爸对小狮子说   0    
(阿里)    爸爸对小狮子说   0    
        (人工)    爸爸对小狮子说       7
                 
34 0:01:39.300 0:01:41.340 2.04 (百度)    狮子听了点了点头   1    
(百度极速版)    狮子听了点了点头   1    
(阿里)    小狮子听了点了点头   0    
        (人工)    小狮子听了点了点头       9
                 
35 0:01:41.550 0:01:46.860 5.31 (百度)    从那以后,小狮子每天都按时刷牙,小伙伴们再也不被他熏倒了   0    
  (百度极速版)    从那以后,小狮子每天都按时刷牙,小伙伴们再也不被他熏倒了   0    
  (阿里)    从那以后,小狮子每天都按时刷牙小伙伴们再也不被他熏到了   0    
        (人工)    从那以后,小狮子每天都按时刷牙小伙伴们再也不被他熏到了       26
                 
                 
    错误率            
总字数: 396              
百度错别字 25 6.31%            
百度极速版错别字 26 6.56%            
阿里 9 2.27%            

 

 

2018-06-30 14:28:01 Xwei1226 阅读数 1389
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    5905 人正在学习 去看看 杨波

  前些天在师兄的帮助下,在此感谢工大的薛师兄,实现了BLSTM的语音识别声学模型的搭建,由于实验室存在保密协议,只能提供部分代码,还望各位同学体谅,代码如下:

# -*- coding : utf-8 -*-
# author : zhangwei

import tensorflow as tf
import numpy as np

filename_01 = '/home/zhangwei/data/train_mfcc_800000.txt'
filename_02 = '/home/zhangwei/data/train_label_800000.txt'
filename_03 = '/home/zhangwei/data/test_mfcc.txt'
filename_04 = '/home/zhangwei/data/test_label.txt'
X_train = np.loadtxt(filename_01)
Y_train = np.loadtxt(filename_02)
X_test = np.loadtxt(filename_03)
Y_test = np.loadtxt(filename_04)

batch_size = 50
n_steps = 1
n_inputs = 39
n_epoch = 100
n_classes = 219
n_hidden_units = 128
lr = 0.01

x = tf.placeholder(dtype=tf.float32 , shape=[batch_size , n_steps , n_inputs])
y = tf.placeholder(dtype=tf.float32 , shape=[batch_size , n_classes])
keep_prob = tf.placeholder(tf.float32)

def get_cell():
    n_cell = tf.nn.rnn_cell.LSTMCell(num_units=n_hidden_units , activation=tf.nn.relu)
    return tf.nn.rnn_cell.DropoutWrapper(cell=n_cell , input_keep_prob=1.0 , output_keep_prob=keep_prob)

cell_fw = get_cell()
cell_bw = get_cell()
init_cell_fw = cell_fw.zero_state(batch_size=batch_size , dtype=tf.float32)
init_cell_bw = cell_bw.zero_state(batch_size=batch_size , dtype=tf.float32)
output , _ = tf.nn.bidirectional_dynamic_rnn(cell_fw=cell_fw , cell_bw=cell_bw , inputs=x , initial_state_fw=init_cell_fw , initial_state_bw=init_cell_bw)

W = tf.Variable(tf.truncated_normal([2 , n_hidden_units , n_classes] , stddev=0.01))
b = tf.Variable(tf.zeros([n_classes]))
output_fw = tf.reshape(output , shape=[-1 , n_hidden_units])
output_bw = tf.reshape(output , shape=[-1 , n_hidden_units])

logist = tf.matmul(output_fw , W[0]) + tf.matmul(output_bw , W[1]) + b
prediction = tf.nn.softmax(logits=logist)

loss_op = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction , labels=y))
train_op = tf.train.AdamOptimizer(0.01).minimize(loss_op)
correct_prediction = tf.equal(tf.argmax(prediction , 1) , tf.argmax(y , 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction , tf.float32))

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for i in range(n_epoch):
        
        print 'Iter : ' + str(i) + ' ; Loss : ' + str(loss) + ' ; Train Acc : ' + str(train_acc) + ' ; Test Acc : ' + str(test_acc)

2012-09-28 23:54:35 safrans 阅读数 4388
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    5905 人正在学习 去看看 杨波
1952年贝尔研究所Davis等人研究成功了世界上第一个能识别10个英文数字发音的实验系统。1960年英国的Denes等人研究成功了第一个计算机语音识别系统。 

大规模的语音识别研究是在进入了70年代以后,在小词汇量、孤立词的识别方面取得了实质性的进展*。 

进入80年代以后,研究的重点逐渐转向大词汇量、非特定人连续语音识别。在研究思路上也发生了重大变化,即由传统的基于标准模板匹配的技术思路开始转向基于统计模型 (HMM)的技术思路。此外,再次提出了将神经网络技术引入语音识别问题的技术思路*。 

进入90年代以后,在语音识别的系统框架方面并没有什么重大突破。但是,在语音识别技术的应用及产品化方面出现了很大的进展*。 

DARPA(Defense Advanced Research Projects Agency)是在70年代由美国国防部远景研究计划局资助的一项10年计划,其旨在支持语言理解系统的研究开发工作*。 

到了80年代,美国国防部远景研究计划局又资助了一项为期10年的DARPA战略计划,其中包括噪声下的语音识别和会话(口语)识别系统,识别任务设定为“(1000单词)连续语音数据库管理”。到了90年代,这一DARPA计划仍在持续进行中。其研究重点已转向识别装置中的自然语言处理部分,识别任务设定为“航空旅行信息检索”。 

日本也在1981年的第五代计算机计划中提出了有关语音识别输入-输出自然语言的宏伟目标,虽然没能实现预期目标,但是有关语音识别技术的研究有了大幅度的加强和进展。1987年起,日本又拟出新的国家项目---高级人机口语接口和自动电话翻译系统。 

我国的语音识别研究起始于1958年,由中国科学院声学所利用电子管电路识别10个元音。直至1973年才由中国科学院声学所开始计算机语音识别。由于当时条件的限制,我国的语音识别研究工作一直处于缓慢发展的阶段。 
进入80年代以后,随着计算机应用技术在我国逐渐普及和应用以及数字信号技术的进一步发展,国内许多单位具备了研究语音技术的基本条件。与此同时,国际上语音识别技术在经过了多年的沉寂之后重又成为研究的热点,发展迅速。就在这种形式下,国内许多单位纷纷投入到这项研究工作中去*。 
1986年3月我国高科技发展计划(863计划)启动,语音识别作为智能计算机系统研究的一个重要组成部分而被专门列为研究课题。在863计划的支持下,我国开始了有组织的语音识别技术的研究,并决定了每隔两年召开一次语音识别的专题会议。从此我国的语音识别技术进入了一个前所未有的发展阶段。 

这一时期的语音识别方法基本上是采用传统的模式识别策略。其中以苏联的Velichko和Zagoruyko、日本的迫江和千叶,以及当时在美国的板仓等人的研究工作最具有代表性。 
- 苏联的研究为模式识别应用于语音识别这一领域奠定了基础; 
- 日本的研究则展示了如何利用动态规划技术在待识语音模式与标准语音模式之间进行非线性时间匹配的方法; 
- 板仓的研究提出了如何将线性预测分析技术(LPC)加以扩展,使之用于语音信号的特征抽取的方法。 

目前在大词汇语音识别方面处于领先地位的IBM语音研究小组,就是在70年代开始了它的大词汇语音识别研究工作的。AT&A的贝尔研究所也开始了一系列有关非特定人语音识别的实验。这一研究历经10年,其成果是确立了如何制作用于非特定人语音识别的标准模板的方法。 

这一时期所取得的重大进展有: 
(1)隐码尔柯夫模型(HMM)技术的成熟和不断完善成为语音识别的主流方法。 
(2)以知识为基础的语音识别的研究日益受到重视。在进行连续语音识别的时候,除了识别声学信息外,更多地利用各种语言知识,诸如构词、句法、语义、对话背景方面等的知识来帮助进一步对语音作出识别和理解。同时在语音识别研究领域,还产生了基于统计概率的语言模型。 
(3)人工神经网络在语音识别中的应用研究的兴起。在这些研究中,大部分采用基于反向传播法(BP算法)的多层感知网络。人工神经网络具有区分复杂的分类边界的能力,显然它十分有助于模式划分。 

特别是在电话语音识别方面,由于其有着广泛的应用前景,成了当前语音识别应用的一个热点。 

另外,面向个人用途的连续语音听写机技术也日趋完善。这方面, 最具代表性的是IBM的ViaVoice和Dragon公司的Dragon Dictate系统。这些系统具有说话人自适应能力,新用户不需要对全部词汇进行训练,便可在使用中不断提高识别率。 


我国的语音识别技术的发展 

(1)在北京有中科院声学所、自动化所、清华大学、北方交通大学等科研机构和高等院校。另外,还有哈尔滨工业大学、中国科技大学、四川大学等也纷纷行动起来。 
(2)现在,国内有不少语音识别系统已研制成功。这些系统的性能各具特色。 
- 在孤立字大词汇量语音识别方面,最具代表性的要数92年清华大学电子工程系与中国电子器件公司合作研制成功的THED-919特定人语音识别与理解实时系统。 
- 在连续语音识别方面,91年12月四川大学计算机中心在微机上实现了一个主题受限的特定人连续英语---汉语语音翻译演示系统。 
- 在非特定人语音识别方面,有清华大学计算机科学与技术系在87年研制的声控电话查号系统并投入实际使用。 

Renference:上海交通大学计算机系 吴亚栋 《语音识别基础》
2014-02-18 11:03:35 tianshi_1105 阅读数 1301
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    5905 人正在学习 去看看 杨波

    就像微软公司认为触摸是计算机的未来形式一样,毫无疑问谷歌认为语音才是未来的用户交互方式。事实上,月初我在山景城的时候,一个谷歌工作的朋友让我尝试着任何时候想用手机都只用语音命令。


    对谷歌来说,现在所有的事情都可以通过语音来完成,说一句 “Ok Google” 或是 “Ok Glass”即可开始。自从谷歌的旗舰手机Moto X和Nexus 5升级到Android 4.4之后,语音识别已经不需要触摸麦克风图标便可开始了。手机会一直保持倾听状态,并且能够随时与你交流。



    这个周末我去看了一次Google And The World Brain(一个关于Google书籍扫描的争议性项目的纪录片)。在纪录片里面出现的唯一人物是 Amit Singhal,Singhal是谷歌副总裁以及核心排名算法小组的领头人。纪录片中Singhal一点都没有提到Google Books,反而一直在讲《星际迷航》这部电影里的技术对他的研究有多大影响。这部片子以及朋友让我只使用语音命令手机的挑战让我对谷歌(苹果或是其他公司)关于语音识别和自然语言处理做的一系列工作有了进一步的思考。


    在语音识别和苹果的Siri刚出来的时候,对着手机或电脑说话总是让人觉得很诡异。感觉就像是跟一个没生命的东西聊天,大部分时间它几乎听不懂你讲什么。早期的语音识别工具非常限制,要求你发音准确,确保你是用指定命令来操作的。问一下车里有语音识别的人对语音的看法便可知道其受欢迎程度(千万不要问还是旧的福特同步系统的车主,他们只会大发脾气)。


    解决各种各样的复杂问题是谷歌前进的动力。我几个月前提到,谷歌的任务之一就是打造最终的私人助理。为了完成这个目标,谷歌需要有完美的语音识别系统,更关键的是背后的自然语言处理算法。


    在手机和Chrome上用谷歌的语言命令能干的事真的是太多了。告诉它“给妈妈打电话”,手机就会自动拨号。语音命令可以帮你打开网页,回答复杂问题,创建约会和备忘录,转换货币,翻译单词和词组,发送邮件和文本。


    在语音搜索方面,谷歌的语音识别系统可以直接语音回复答案,这是其他公司目前还不能做到的,仅仅是因为他们不能与谷歌的知识图谱相匹配。更有趣的是,这些语音命令经常让你和手机会有些小对话。


    “给Alex打电话”“哪个Alex?”“Alex Wilhelm”“手机还是座机?”“手机”“给Alex拨号中”


    谷歌能够做到上述这些,甚至可以识别扩展对话中的代名词真的很令人敬畏。虽然对我来说语音识别还是让我觉得很怪异,我不可能马上在公众场合使用语音识别,一个人在办公室的时候用语音识别更奇怪。


    我猜想这样的迟疑会随着时间慢慢减少,就像视频会议刚出来的时候还不是显得很奇怪,但现在我们都已经习惯在Skype,FaceTime 和Google Hangouts上视频聊天了。


    也许语音识别真的是未来用户交互方式。自然语言处理和所有用于谷歌语音命令搜索的技术都会形成人工智能系统的核心。


    所以谷歌几个星期前收购了一家名为DeepMind的人工智能初创公司一点都不奇怪。DeepMind是一家致力于高尖端人工智能的创业公司,传闻谷歌CEO拉里·佩奇亲自负责此交易。2000年,佩奇曾说他相信“谷歌的最终目标就是人工智能。”谷歌也会向这个方向一直发展,Google X神秘实验室中的大多研究者也对人工智能很感兴趣。


    我最后还是没能整天只用语音控制我的手机,不是因为语音识别不好用,而是我不想整天和手机说话。


【敬请添加微信公众帐号:数据堂 微信号:datatang】

2017-11-19 15:47:51 chenhaifeng2016 阅读数 1908
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    5905 人正在学习 去看看 杨波

文 / 陈孝良

 

11月16号,百度发布了渡鸦智能音箱和DuerOS开发板SoundPi,至此,国内再一名巨头加入智能音箱大战。迄今为止,国内战场上的巨头有阿里、京东、腾讯、百度、小米、科大讯飞等,国外则有苹果、微软、亚马逊、谷歌、脸书、三星等,这些巨头占据了全球市值的排名榜,同时发力争夺未来人工智能时代的语音入口,甚至亚马逊和阿里率先不惜代价开启了补贴大战。这些全球巨头的激烈竞争,将对未来十年产生极其重要的影响,同时,这更是新一波的职业快速发展机会。


语音智能当前的核心关键是声学问题和语义理解,随着市场需求的爆发,能够补齐其中一项技术短板的全栈语音识别工程师将会变成职场香饽饽,而且这类人才的培养成本非常高昂,至少会在未来十年内成为各大巨头和创业公司争抢的核心人才。


那么,如何成为一名全栈语音识别工程师呢?原中国科学院声学研究所副研究员,声智科技创始人陈孝良接受了我们的邀约,专门就这个话题撰文。这是一篇将知识纵横连接,并能结合实践深入浅出的文章,对于全面了解语音识别很有帮助。其后,AI科技大本营就几个问题略作追访,希望对你有所帮助。



语音识别基础知识

 

【数学与统计学】

数学是所有学科的基础,其中的高等数学、数理方程、泛函分析等课程是必要的基础知识,概率论与数理统计也是语音识别的基础学科。

 

【声学与语言学】

声学基础、理论声学、声学测量等是声学方面的基础课程,有助于了解更多声学领域的知识。语言学概论、语言哲学、语义最小论与语用多元论、语法化与语义图等知识对于理解语言模型和语音交互UI设计非常有帮助。

 

【计算机学】

信号系统、数字信号处理、语音信号处理、离散数学、数据结构、算法导论、并行计算、C语言概论、Python语言、语音识别、深度学习等课程也是必备的基础知识。

 


语音识别专业知识

 

语音识别的知识体系可以划分为三个大的部分:专业基础、支撑技能和应用技能。语音识别的专业基础又包括了算法基础、数据知识和开源平台,其中算法基础是语音识别系统的核心知识,包括了声学机理、信号处理、声学模型、语言模型和解码搜索等。



【专业基础】

 

算法基础


声学机理:包括发音机理、听觉机理和语言机理,发音机理主要探讨人类发声器官和这些器官在发声过程中的作用,而听觉机理主要探讨人类听觉器官、听觉神经及其辨别处理声音的方式,语言机理主要探究人类语言的分布和组织方式。这些知识对于理论突破和模型生成具有重要意义。

 

信号处理:包括语音增强、噪声抑制、回声抵消、混响抑制、波束形成、声源定位、声源分离、声源追踪等。具体如下:

 

  1. 语音增强:这里是狭义定义,指自动增益或者阵列增益,主要是解决拾音距离的问题,自动增益一般会增加所有信号能量,而语音增强只增加有效语音信号的能量。

  2. 噪声抑制:语音识别不需要完全去除噪声,相对来说通话系统中则必须完全去除噪声。这里说的噪声一般指环境噪声,比如空调噪声,这类噪声通常不具有空间指向性,能量也不是特别大,不会掩盖正常的语音,只是影响了语音的清晰度和可懂度。这种方法不适合强噪声环境下的处理,但是足以应付日常场景的语音交互。

  3. 混响消除:混响消除的效果很大程度影响了语音识别的效果。一般来说,当声源停止发声后,声波在房间内要经过多次反射和吸收,似乎若干个声波混合持续一段时间,这种现象叫做混响。混响会严重影响语音信号处理,并且降低测向精度。

  4. 回声抵消:严格来说,这里不应该叫回声,应该叫“自噪声”。回声是混响的延伸概念,这两者的区别就是回声的时延更长。一般来说,超过100毫秒时延的混响,人类能够明显区分出,似乎一个声音同时出现了两次,就叫做回声。实际上,这里所指的是语音交互设备自己发出的声音,比如Echo音箱,当播放歌曲的时候若叫Alexa,这时候麦克风阵列实际上采集了正在播放的音乐和用户所叫的Alexa声音,显然语音识别无法识别这两类声音。回声抵消就是要去掉其中的音乐信息而只保留用户的人声,之所以叫回声抵消,只是延续大家的习惯,其实是不恰当的。

  5. 声源测向:这里没有用声源定位,测向和定位是不太一样的,而消费级麦克风阵列做到测向就可以,定位则需要更多的成本投入。声源测向的主要作用就是侦测到与之对话人类的声音以便后续的波束形成。声源测向可以基于能量方法,也可以基于谱估计,阵列也常用TDOA技术。声源测向一般在语音唤醒阶段实现,VAD技术其实就可以包含到这个范畴,也是未来功耗降低的关键因素。

  6. 波束形成:波束形成是通用的信号处理方法,这里是指将一定几何结构排列的麦克风阵列的各麦克风输出信号经过处理(例如加权、时延、求和等)形成空间指向性的方法。波束形成主要是抑制主瓣以外的声音干扰,这里也包括人声,比如几个人围绕Echo谈话的时候,Echo只会识别其中一个人的声音。

 

端点检测:端点检测,英语是Voice ActivityDetection,简称VAD,主要作用是区分一段声音是有效的语音信号还是非语音信号。VAD是语音识别中检测句子之间停顿的主要方法,同时也是低功耗所需要考虑的重要因素。VAD通常都用信号处理的方法来做,之所以这里单独划分,因为现在VAD的作用其实更加重要,而且通常VAD也会基于机器学习的方法来做。

 

特征提取:声学模型通常不能直接处理声音的原始数据,这就需要把时域的声音原始信号通过某类方法提取出固定的特征序列,然后将这些序列输入到声学模型。事实上深度学习训练的模型不会脱离物理的规律,只是把幅度、相位、频率以及各个维度的相关性进行了更多的特征提取。

 

声学模型:声学模型是语音识别中最为关键的部分,是将声学和计算机学的知识进行整合,以特征提取部分生成的特征作为输入,并为可变长的特征序列生成声学模型分数。声学模型核心要解决特征向量的可变长问题和声音信号的多变性问题。事实上,每次所提到的语音识别进展,基本上都是指声学模型的进展。声学模型迭代这么多年,已经有很多模型,我们把每个阶段应用最为广泛的模型介绍一下,其实现在很多模型都是在混用,这样可以利用各个模型的优势,对于场景的适配更加鲁棒。

 

  1. GMM,Gaussian Mixture Model,即高斯混合模型,是基于傅立叶频谱语音特征的统计模型,可以通过不断迭代优化求取GMM中的加权系数及各个高斯函数的均值与方差。GMM模型训练速度较快,声学模型参数量小,适合离线终端应用。深度学习应用到语音识别之前,GMM-HMM混合模型一直都是优秀的语音识别模型。但是GMM不能有效对非线性或近似非线性的数据进行建模,很难利用语境的信息,扩展模型比较困难。

  2. HMM,Hidden Markov Model,即隐马尔可夫模型,用来描述一个含有隐含未知参数的马尔可夫过程,从可观察的参数中确定该过程的隐含参数,然后利用这些参数来进一步分析。HMM是一种可以估计语音声学序列数据的统计学分布模型,尤其是时间特征,但是这些时间特征依赖于HMM的时间独立性假设,这样对语速、口音等因素与声学特征就很难关联起来。HMM还有很多扩展的模型,但是大部分还只适应于小词汇量的语音识别,大规模语音识别仍然非常困难。

  3. DNN,Deep Neural Network,即深度神经网络,是较早用于声学模型的神经网络,DNN可以提高基于高斯混合模型的数据表示的效率,特别是DNN-HMM混合模型大幅度地提升了语音识别率。由于DNN-HMM只需要有限的训练成本便可得到较高的语音识别率,目前仍然是语音识别工业领域常用的声学模型。

  4. RNN,Recurrent Neural Networks,即循环神经网络,CNN,Convolutional NeuralNetworks,即卷积神经网络,这两种神经网络在语音识别领域的应用,主要是解决如何利用可变长度语境信息的问题,CNN/RNN比DNN在语速鲁棒性方面表现的更好一些。其中,RNN模型主要包括LSTM(多隐层长短时记忆网络)、highway LSTM、Residual LSTM、双向LSTM等。CNN模型包括了时延神经网络(TDNN)、CNN-DNN、CNN-LSTM-DNN(CLDNN)、CNN-DNN-LSTM、Deep CNN等。其中有些模型性能相近,但是应用方式不同,比如双向LSTM和Deep CNN性能接近,但是双向LSTM需要等一句话结束才能识别,而Deep CNN则没有时延更适合实时语音识别。


语言模型:通过训练语料学习词之间的关系来估计词序列的可能性,最常见的语言模型是N-Gram模型。近年,深度神经网络的建模方式也被应用到语言模型中,比如基于CNN及RNN的语言模型。

 

解码搜索:解码是决定语音识别速度的关键因素,解码过程通常是将声学模型、词典以及语言模型编译成一个网络,基于最大后验概率的方法,选择一条或多条最优路径作为语音识别结果。解码过程一般可以划分动态编译和静态编译,或者同步与异步的两种模式。目前比较流行的解码方法是基于树拷贝的帧同步解码方法。

 


语音识别数据知识

 

数据采集:主要是将用户与机器对话的声音信息收集起来,一般分为近场和远场两个部分,近场采集一般基于手机就可完成,远场采集一般需要麦克风阵列。数据采集同时还有关注采集环境,针对不同数据用途,语音采集的要求也很不一样,比如人群的年龄分布、性别分布和地域分布等。

 

数据清洗:主要是将采集的数据进行预处理,剔除不合要求的语音甚至是失效的语音,为后面的数据标注提供精确的数据。

 

数据标注:主要是将声音的信息翻译成对应的文字,训练一个声学模型,通常要标注数万个小时,而语音是时序信号,所以需要的人力工时相对很多,同时由于人员疲惫等因素导致标注的错误率也比较高。如何提高数据标注的成功率也是语音识别的关键问题。

 

数据管理:主要是对标注数据的分类管理和整理,这样更利于数据的有效管理和重复利用。

 

数据安全:主要是对声音数据进行安全方便的处理,比如加密等,以避免敏感信息泄露。

 


语音识别开源平台

 

目前主流的开源平台包括CMU Sphinx、HTK、Kaldi、Julius、iATROS、CNTK、TensorFlow等,CMU Sphinx是离线的语音识别工具,支持DSP等低功耗的离线应用场景。由于深度学习对于语音识别WER的下降具有明显的作用,所以Kaldi、CNTK、TensorFlow等支持深度学习的工具目前比较流行,Kaldi的优势就是集成了很多语音识别的工具,包括解码搜索等。具体的开源平台汇总如表1所示。


【支撑技能】

 

声学器件


  • 传声器,通常称为麦克风,是一种将声音转换成电子信号的换能器,即把声信号转成电信号,其核心参数是灵敏度、指向性、频率响应、阻抗、动态范围、信噪比、最大声压级(或AOP,声学过载点)、一致性等。传声器是语音识别的核心器件,决定了语音数据的基本质量。


  • 扬声器,通常称为喇叭,是一种把电信号转变为声信号的换能器件,扬声器的性能优劣对音质的影响很大,其核心指标是TS参数。语音识别中由于涉及到回声抵消,对扬声器的总谐波失真要求稍高。


  • 激光拾声,这是主动拾声的一种方式,可以通过激光的反射等方法拾取远处的振动信息,从而还原成为声音,这种方法以前主要应用在窃听领域,但是目前来看这种方法应用到语音识别还比较困难。


  • 微波拾声,微波是指波长介于红外线和无线电波之间的电磁波,频率范围大约在 300MHz至300GHz之间,同激光拾声的原理类似,只是微波对于玻璃、塑料和瓷器几乎是穿越而不被吸收。


  • 高速摄像头拾声,这是利用高速摄像机来拾取振动从而还原声音,这种方式需要可视范围和高速摄像机,只在一些特定场景里面应用。

 

计算芯片


  • DSP,Digital Signal Processor,数字信号处理器,一般采用哈佛架构,具有低功耗运算快等优点,主要应用在低功耗语音识别领域。


  • ARM,Acorn RISC Machine,是英国公司设计的一种RISC处理器架构,具有低功耗高性能的特点,在移动互联网领域广泛应用,目前IOT领域,比如智能音箱也是以ARM处理器为主。


  • FPGA,Field-Programmable Gate Array,现场可编程门阵列,是ASIC领域中的一种半定制电路,既解决了固定定制电路的不足,又克服了可编程器件门电路有限的缺点。FPGA在并行计算领域也非常重要,大规模的深度学习也可以基于FPGA计算实现。


  • GPU,Graphics Processing Unit,图形处理器,是当前深度学习领域最火的计算架构,事实上深度学习领域用到的是GPGPU,主要是进行大规模计算的加速,GPU通常的问题就是功耗过大,所以一般应用到云端的服务器集群。


  • 另外,还有NPU、TPU等新兴的处理器架构,主要为深度学习算法进行专门的优化,由于还没有大规模使用,这里先不详叙。

 

声学结构


阵列设计,主要是指麦克风阵列的结构设计,麦克风阵列一般来说有线形、环形和球形之分,严谨的应该说成一字、十字、平面、螺旋、球形及无规则阵列等。至于麦克风阵列的阵元数量,也就是麦克风数量,可以从2个到上千不等,因此阵列设计就要解决场景中的麦克风阵列阵型和阵元数量的问题,既保证效果,又控制成本。


声学设计,主要是指扬声器的腔体设计,语音交互系统不仅需要收声,还需要发声,发声的质量也特别重要,比如播放音乐或者视频的时候,音质也是非常重要的参考指标,同时,音质的设计也将影响语音识别的效果,因此声学设计在智能语音交互系统也是关键因素。

 

【应用技能】

 

  • 语音识别的应用将是语音交互时代最值得期待的创新,可以类比移动互联时代,最终黏住用户的还是语音应用程序,而当前的人工智能主要是基础建设,AI的应用普及还是需要一段时间。虽然Amazon的Alexa已经有上万个应用,但是从用户反馈来看,目前主要还是以下几个核心技术点的应用。


  • 语音控制,事实上是当前最主要的应用,包括了闹钟、音乐、地图、购物、智能家电控制等等功能,语音控制的难度相对也比较大,因为语音控制要求语音识别更加精准、速度更快。


  • 语音转录,这在比如会议系统、智能法院、智能医疗等领域具有特殊应用,主要是实时将用户说话的声音转录成文字,以便形成会议纪要、审判记录和电子病历等。


  • 语言翻译,主要是在不同语言之间进行切换,这在语音转录的基础上增加了实时翻译,对于语音识别的要求更高。

 

下面这三种识别,可以归为语音识别的范畴,也可以单独列成一类,这里我们还是广义归纳到语音识别的大体系,作为语音识别的功能点更容易理解。

 

  • 声纹识别,声纹识别的理论基础是每一个声音都具有独特的特征,通过该特征能将不同人的声音进行有效的区分。声纹的特征主要由两个因素决定,第一个是声腔的尺寸,具体包括咽喉、鼻腔和口腔等,这些器官的形状、尺寸和位置决定了声带张力的大小和声音频率的范围。第二个决定声纹特征的因素是发声器官被操纵的方式,发声器官包括唇、齿、舌、软腭及腭肌肉等,他们之间相互作用就会产生清晰的语音。而他们之间的协作方式是人通过后天与周围人的交流中随机学习到的。声纹识别常用的方法包括模板匹配法、最近邻方法、神经元网络方法、VQ聚类法等。

 

  • 情感识别,主要是从采集到的语音信号中提取表达情感的声学特征,并找出这些声学特征与人类情感的映射关系。情感识别当前也主要采用深度学习的方法,这就需要建立对情感空间的描述以及形成足够多的情感语料库。情感识别是人机交互中体现智能的应用,但是到目前为止,技术水平还没有达到产品应用的程度。

 

  • 哼唱识别,主要是通过用户哼唱歌曲的曲调,然后通过其中的旋律同音乐库中的数据进行详细分析和比对,最后将符合这个旋律的歌曲信息提供给用户。目前这项技术在音乐搜索中已经使用,识别率可以达到80%左右。

 

 

语音识别现状和趋势

 

目前来看,语音识别的精度和速度比较取决于实际应用环境,在安静环境、标准口音、常见词汇上的语音识别率已经超过95%,完全达到了可用状态,这也是当前语音识别比较火热的原因。随着技术的发展,现在口音、方言、噪声等场景下的语音识别也达到了可用状态,但是对于强噪声、超远场、强干扰、多语种、大词汇等场景下的语音识别还需要很大的提升。当然,多人语音识别和离线语音识别也是当前需要重点解决的问题。

 

学术界探讨了很多语音识别的技术趋势,有两个思路是非常值得关注的,一个是就是端到端的语音识别系统,另外一个就是G.E. Hinton最近提出的胶囊理论,Hinton的胶囊理论学术上争议还比较大,能否在语音识别领域体现出来优势还值得探讨。

 

端到端的语音识别系统当前也没有大规模应用,从理论上来看,由于语音识别本质上是一个序列识别问题,如果语音识别中的所有模型都能够联合优化,应该会获取更好的语音识别准确度,这也是端到端语音识别系统的优势。但是从语音采集、信号处理、特征提取、声学模型、语音模型、解码搜索整个链条都做到端到端的建模处理,难度非常大,因此现在常说的端到端的模型基本还是局限于声学模型范畴,比如将DNN-HMM或者CNN/RNN-HMM模型进行端到端的优化,比如CTC准则和Attention-based模型等方法。事实上,端到端的训练,可以把真实场景的噪声、混响等也作为新特征来进行学习,这样可以减少对于信号处理的依赖,只是这种方法还存在训练性能、收敛速度、网络带宽等诸多问题,相对于主流的语音识别方法还没有取得明显的优势。

 

本文以科普为主,非常感谢国内语音识别领域各位伙伴的支持,文中若有不足之处,期待大家的指正!

 

【参考文献】

1.Deep Learning:Methods andApplications,Li Deng and Dong Yu

2.Automaitic Speechand Speaker Recognition: Large Margin and Kernel Methods, Joseph Keshet andSamy Bengio

3.Xuedong Huang, Alex Acero, Hsiao-wuenHon, Spoken Language Processing

4.Lawrence Rabiner,Biing-Hwang Juang, Fundamentals of Speech Recognition

5.Dan jurafsky andJames H. Martin, Speech and Language Processing

6.Dynamic RoutingBetween Capsules,Sara Sabour,Nicholas Frosst,Geoffrey E. Hinton

7.https://en.wikipedia.org/wiki/Speech_perception

8.http://www.speech.cs.cmu.edu

9.http://htk.eng.cam.ac.uk/

10.http://kaldi-语音识别.org/

11.https://www.microsoft.com/en-us/cognitive-toolkit/

12.http://www.soundpi.org/


作者:陈孝良

作者简介:博士,声智科技创始人,专注声学前沿技术和人工智能交互,曾任中国科学院声学研究所副研究员。

没有更多推荐了,返回首页