文档中心
文档中心 / 语音识别
此文档自2018年3月起不再更新,建议访问 http://ai.baidu.com/docs#/ASR-API/top 来查看相关内容

语音识别

简介

概述

本文档是百度AI开放平台Linux SDK (C++)BDSpeechSDK 3.x 的用户指南。描述了在线语音识别相关接口的使用说明

ASR 自动语音识别技术(Automatic Speech Recognition), 将人的语音转换为文本。

  • LinuxSDK 仅支持在线语音识别,固定长语音模式。
  • LinuxSDK内部采用流式接口,即边读取语音流边处理。 该流式方式同Android iOS SDK, 区别于Rest Api需要上传完整录音文件。

再次提醒: BDSpeechSDK的功能只有不限音频流时长的在线识别功能,并可以返回服务器端语义。没有任何离线功能,没有离线识别及唤醒词功能。

SDK 支持 普通话,英语,四川话和粤语

编译运行环境

目前仅支持 64位 Linux 操作系统。

目前支持运行centos 4-7 版本,及Ubuntu 14.04, 测试使用g++ 4.8.x版本。 其它Linux及g++版本暂时未做测试,请自行尝试编译,如果有报错请反馈。

线程限制

SDK限制为10个识别线程。

输入音频流

输入音频流的音频格式为pcm, 单声道,16bits, 小端序。采样率16k。

实时传输的一个16k采样率的音频流需要32kb/s的网速,10个并发音频流需要320K/s ,请确保与百度服务器之间的网络稳定。

开启压缩传输后会降低传输的数据量,但是音频质量会有损失。

  • 开启EVR_AUDIO_COMPRESSION_BV32有损压缩,压缩为原始大小的1/8;(默认,不推荐)
  • 开启EVR_AUDIO_COMPRESSION_AMR有损压缩,压缩为原始大小的1/16;

输出

SDK 输出的结果为识别音频的文字。如果开始语义理解后,进一步在识别音频的文字的基础上可以获取简单的语义解析结果。复杂的语义解析及智能问答可以参见ai.baidu.com上文本处理类的接口。

耗时

如果您用的是实时音频,没有影响。如果您用的是录音文件,请sleep与原始音频相同的时间,否则结果无法预期。即从音频开始进行计算到获取最终结果,识别整体耗时都是略多于原始音频的时长。

测试SDK

如果您需要测试SDK,请至sample目录。

  • sample/asr 目录下main.cpp 直接展示如何使用SDK, 运行build.sh 执行
  • sample/asrDemo2, 对SDK做了进一步封装,简化调用。运行run/build.sh 执行。asrDemo2 同时也是Clion的项目,可以直接导入运行。
  • sample/asrDemo-srt, 在asrDemo2,一个完整的添加视频文件字幕的程序,请读sample/asrDemo-srt/Readme.md文件后,再进行测试。

目录结构

BDSpeechSDK中包含extern, include, lib, sample, resources五个目录。
如果您需要测试SDK,请至sample目录。

  • extern包含需要的第三方库和头文件
  • include包含需要引入的头文件

    • BDSpeechSDK.hpp包含sdk可用接口
    • BDSSDKMessage.hpp 包含给sdk发送的消息的结构定义
    • ASR/bds_ASRDefines.hpp 包含sdk相关参数取值的定义,错误分类,对应错误码
    • ASR/bds_asr_key_definitions.hpp 包含sdk相关参数的定义
  • lib 包含需要引入的SDK库文件

  • resources 包含sdk VAD 算法需要的模型文件

  • sample 目录下有3个示例

g++ 安装

Centos 5 或 6 上如果没有g++程序,请按以下代码安装:

  1. yum install gcc-c++
  2. g++ --version

默认是 4.4.7 版本

升级至4.8.2

wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo
yum install devtoolset-2-gcc-c++ 及以下包

  1. devtoolset-2-binutils-2.23.52.0.1-10.el6.x86_64.rpm
  2. devtoolset-2-build-2.1-4.el6.noarch.rpm
  3. devtoolset-2-gcc-4.8.2-15.el6.x86_64.rpm
  4. devtoolset-2-gcc-c++-4.8.2-15.el6.x86_64.rpm
  5. devtoolset-2-gdb-7.6.1-47.el6.x86_64.rpm
  6. devtoolset-2-libstdc++-devel-4.8.2-15.el6.x86_64.rpm
  7. devtoolset-2-runtime-2.1-4.el6.noarch.rpm
  8. # 如果网速过慢的话,可以手动下载上述rpm文件
  9. # 链接:https://pan.baidu.com/s/1qZk6wVy 密码:zjew
  10. # yum localinstall *.rpm
  1. mv /usr/bin/gcc /usr/bin/gcc-4.4.7
  2. mv /usr/bin/g++ /usr/bin/g++-4.4.7
  3. mv /usr/bin/c++ /usr/bin/c++-4.4.7
  4. ln -s /opt/rh/devtoolset-2/root/usr/bin/gcc /usr/bin/gcc
  5. ln -s /opt/rh/devtoolset-2/root/usr/bin/c++ /usr/bin/c++
  6. ln -s /opt/rh/devtoolset-2/root/usr/bin/g++ /usr/bin/g++

成功后:

  1. [root@instance-ah3bznc6 root]# g++ --version
  2. g++ (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15)
  3. Copyright (C) 2013 Free Software Foundation, Inc.