Delphi专题 ·

Delphi调用百度语音识别服务

简介

百度语音识别通过 REST API 的方式给开发者提供一个通用的 HTTP 接口。 上传需要完整的录音文件,录音文件时长不超过60s。百度语音提供2种识别模型:

  • 搜索模型: 效果同手机百度搜索的语音输入。适合于短语识别,没有逗号。
  • 输入法模型:效果同百度输入法的语音输入。适合于长句识别,有逗号。

文档地址:http://ai.baidu.com/docs#/ASR-API/top

调用流程

创建应用

  • 1、登录百度云服务平台,没有账号请先自行注册https://cloud.baidu.com/
  • 2、在产品服务——人工智能——百度语音 下创建一个应用,输入应用名称和应用描述,点击创建应用。创建成功后点击查看应用详情。会生成API Key和Secret Key

获取token

可得到如下结果

scope中含有audio_tts_post 表示有语音合成能力,没有该audio_tts_post 的token调用接口会返回502错误。 在结果中可以看见 token = 1.a6b7dbd428f731035f771b8d********.86400.1292922000-2346678-124328,在2592000秒(30天)后过期
响应数据包如下所示,其中 “access_token” 字段即为请求 REST API 所需的令牌, 默认情况下,Access Token 有效期为30天,开发者需要对 Access Token的有效性进行判断,如果Access Token过期可以重新获取。

语音格式

格式支持:pcm(不压缩)、wav(不压缩,pcm编码)、amr(压缩格式)。推荐pcm 采样率 :16000 固定值。 编码:16bit 位深的单声道。
百度服务端会将非pcm格式,转为pcm格式,因此使用wav、amr会有额外的转换耗时。

请求方式

如果您的音频在本地,需要将音频数据放在body中。(推荐方式) 音频在本地,有JSON和raw两种方式提交。这两种提交方式,均不是浏览器表单的提交
一、json 方式,上传本地文件

  • 音频文件,读取二进制内容后, base64 放在speech参数内。
  • 音频文件的原始大小, 即二进制内容的字节数,填写“len”字段

由于使用json格式, header为:
Content-Type:application/json
注意 由于base64编码后,数据会增大1/3。
二、raw方式,上传本地文件(本文使用这种方式)

  • 音频文件,读取二进制内容后,直接放在body中。
  • Content-Length的值即为音频文件的大小。(一般代码会自动生成)。

由于使用raw方式, 采样率和文件格式需要填写在Content-Type中
Content-Type: audio/pcm;rate=16000

识别语言及模型选择

dev_pid 语言 模型 是否有标点 备注
1536 普通话(支持简单的英文识别) 搜索模型 无标点 支持自定义词库
1537 普通话(纯中文识别) 输入法模型 有标点 不支持自定义词库
1737 英语 有标点 不支持自定义词库
1637 粤语 有标点 不支持自定义词库
1837 四川话 有标点 不支持自定义词库
1936 普通话远场 远场模型 有标点 不支持

目前 API 仅支持整段语音识别的模式,即需要上传完整语音文件进行识别。文件大小不超过10M,时长不超过60s。 语音数据上传POST方式有2种:

  • 1、JSON格式POST上传本地文件。
  • 2、raw格式POST上传本地文件(本文使用这种方式)

正式地址:http://vop.baidu.com/server_api 或 https://vop.baidu.com/server_api

源码下载

此处内容需要 并付费购买才可见

Delphi调用百度语音识别服务

2.99
0.0 满分5 基于 0 个用户评分
立即购买

参与评论