开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
图像技术
文字识别
人脸与人体识别
视频技术
AR与VR
自然语言处理
知识图谱
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
智能农业
信息服务
智能园区
智能硬件
语音技术

    简介

    概述

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

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

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

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

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


    版本历史

    版本,sdk->get_sdk_version() 发布时间 libBDSpeechSDK.a md5值 更新内容
    3.0.0.30628d440 2019-05-16 160ce32bb19c1f132f81e9e3096ab742 添加自训练平台LMID支持
    3.0.0.9a7b48a3a 2018-04-28 3974ca4d43dedff8d56b8830f2b17983

    编译运行环境

    目前仅支持 X64(x86-64) CPU架构的 Linux 操作系统,通常是服务器或者台式机,及安装在上面的Linux 较新操作系统。 不支持其它CPU架构如x86,arm等, 即不支持32位系统,树莓派,arm开发板, arm 手机等。

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

    如果使用g++ 5.x以上版本编译,需要开启-D_GLIBCXX_USE_CX11ABI=0,SDK可以正常使用,但可能导致您自己的部分新特性的代码不能编译。


    线程限制

    SDK限制为10个识别线程,但可以跑多个进程。 注意申请应用默认的并发 一般是10,即不管跑多少个进程,全部进程的线程数之和不能超过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++程序,请按以下代码安装:

    yum install gcc-c++
    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++  devtoolset-2-binutils devtoolset-2-build devtoolset-2-gdb devtoolset-2-libstdc++-devel devtoolset-2-runtime

    如果网速过慢的话,可以手动下载 下面的rpm文件本地安装

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

    成功后:

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

    功能简介

    功能基本等同于Android iOS SDK的在线部分。BDSpeechSDK没有任何离线功能。

    按步骤主要分为语音识别 及 语义理解。

    • 在线语音识别: 将录音转为文字。目前在线识别支持普通话,英语,四川话及粤语
    • 在线语义理解: 将语音识别出的文字,进行分词及找出意图。仅支持普通话

    识别模型及语言

    百度语音提供1种识别模型

    • 输入法模型:效果同百度输入法的语音输入。适合于长句识别。

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

    识别模型和输入法模型及语言由ASR_PARAM_KEY_PRODUCT_ID控制

    静音断句及时长设置

    SDK根据静音时长判断一句话有没有结束。SDK检测到静音时长超过这个时间后,就认为一句话结束,句子该切分了。

    静音时长可以单独设置,建议值 200ms - 3000ms。参见ASR_PARAM_KEY_MAX_SPEECH_PAUSE参数


    自定义词库

    自定义词库适合短句,保证词库中一模一样的短句可以被识别出,词库中的分词优先级较高。 自定义词库仅对输入法模型生效。最好在1万行以内。

    副作用:如果用户的测试集中包含大量非自定义词表的query,整体上准确率下降。

    举例:

    词库定义了1个短句: 1 . 摆渡船来了 百度内部处理的可能的分词结果: 摆渡船 来 了

    以下录音的结果

    1. 原始音频:摆渡船来了 =>识别结果: 摆渡船来了 【保证结果】
    2. 原始音频:摆渡船来了么 =>识别结果: 百度传来了么 【可能结果,不保证】
    3. 原始音频:摆渡船来 => 识别结果: 百度传来 【可能结果,不保证】
    4. 原始音频:百度传来了喜讯 => 识别结果: 摆渡船来了喜讯 【不保证,词库内的分词优先级高】

    ##自训练平台模型 自训练平台可以认为是自定义词库的升级版本,可以更加直观地查看训练效果。同样使用您自定义的文本进行结果优化。 自训练平台只支持android ios 及linux C++ SDK, 不支持restapi及restapi相关sdk。

    具体功能及使用说明请查看 “自训练平台手册

    自训练平台的模型(pid = 8001 8002),目前不支持在线语义功能。

    自训练平台模型上线后,您会看见 第二步:获取专属模型参数pid:8001,modelid:1234”,按照这个信息填写 PID=8001,LM_ID=1234

    上一篇
    实时语音识别-iOS SDK
    下一篇
    调用流程