文档中心
文档中心 / 语音识别

语音识别

简介

概述

本文档是百度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++版本暂时未做测试,请自行尝试编译,如果有报错请反馈。

线程限制

目前单个appId QPS限制 10 个,因此SDK限制为10个识别线程。

输入音频流

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

实时传输的一个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/asrDemo, 对SDK做了进一步封装,简化调用。运行run/build.sh 执行。asrDemo 同时也是Eclipse CDT的项目,可以直接导入运行。
  • 目录结构

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 目录下有2个示例

g++ 安装

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

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

默认是4.8.5版本