VoiceDictation
- JavaScript 48.1%
- HTML 31.7%
- CSS 20.2%
| css | ||
| js | ||
| .gitignore | ||
| index.html | ||
| README.md | ||
百度实时语音识别 Web API
功能简介:
- 基于百度AI开放平台实时语音识别WebSocket API,将语音实时转换成文字。
- 支持中文普通话(带标点)、英文、粤语、四川话、东北话等。
- 采用WebSocket连接,边上传音频边获取识别结果,实现流式实时转写。
- 开通即享每年10小时免费额度,超出后可购买预付费包或按量后付费(3元/小时)。
- 本项目基于 @muguilin/xf-voice-dictation 改造,将讯飞API替换为百度API。
实例效果:
申请百度API凭证:
- 打开 百度AI开放平台 - 实时语音识别
- 点击右上角"控制台"登录(需百度账号并实名认证)
- 在控制台创建应用,选择"语音技术"服务,勾选"实时语音识别"
- 创建后获取 APPID 和 API Key
注意:
js/config.js包含真实 API 凭证,已加入.gitignore。请勿将此文件提交到公开仓库。部署时确保配置文件权限安全。
使用方法:
# 1. 复制配置文件模板
cp js/config.example.js js/config.js
# 2. 编辑 config.js,填入你的百度 API 凭证
# APPID: 百度控制台获取的 AppID
# APIKey: 百度控制台获取的 API Key
// js/config.js
window.BdConfig = {
APPID: '你的APPID', // 数字,如 12345678
APIKey: '你的APIKey' // 字符串
};
<!-- 浏览器中直接引入 -->
<script src="./js/config.js"></script>
<script src="./js/bd-voice-dictation.js"></script>
<script>
// config.js 中定义的 window.BdConfig 会被自动读取
const bdVoice = new BdVoiceDictation({
APPID: window.BdConfig.APPID,
APIKey: window.BdConfig.APIKey,
...
});
// 开始录音识别
bdVoice.start();
// 停止录音识别
bdVoice.stop();
// 获取当前识别结果
const result = bdVoice.getResult();
// 完全重置(释放所有资源)
bdVoice.destroy();
</script>
API 说明:
凭证通过 js/config.js 文件管理(不纳入版本控制),部署前将 config.example.js 复制为 config.js 并填入实际值。
const bdVoice = new BdVoiceDictation({
APPID: 'your_app_id', // 必填
APIKey: 'your_api_key', // 必填
// WebSocket请求地址(非必传,默认:wss://vop.baidu.com/realtime_asr)
url: '',
// 识别模型(非必传,默认15372)
dev_pid: 15372,
// 自动关闭时间(毫秒),默认3000
autoCloseTime: 3000,
// 是否启用自动关闭
autoClose: true,
// 调试模式
debug: false,
// 音频发送间隔(毫秒),默认160
interval: 160,
// 每次发送的字节数,默认5120
frameSize: 5120,
onWillStatusChange: (oldStatus, newStatus) => {},
onTextChange: (text) => {},
onError: (error) => {}
});
识别模型(dev_pid)说明:
| dev_pid | 语言 | 标点 | 说明 |
|---|---|---|---|
| 1537 | 中文普通话 | 弱标点(逗号、句号) | 手机近场输入 |
| 15372 | 中文普通话 | 加强标点 | 推荐使用 |
| 15376 | 中文多方言 | 弱标点 | 支持粤语、四川话、东北话 |
| 1737 | 英语 | 无标点 | 手机近场输入 |
| 17372 | 英语 | 加强标点 | 推荐使用 |
使用中文多方言模型(pid:15376)时,需同时设置user参数(任意值),可在setParams中传给内部。
计费说明:
- 开通即享每年10小时免费时长
- 超出后可按预付费包(1000小时/1800元)或后付费(3元/小时)计费
- 详情见:https://ai.baidu.com/tech/speech/realtime_asr
常见问题:
Q: 和讯飞版的区别是什么?
A: 百度版无需HMAC-SHA256签名和CryptoJS依赖,认证更简单;音频以二进制帧发送而非base64 JSON;建议160ms/帧。
Q: 只能在 HTTPS 环境下使用吗?
A: 浏览器要求在
localhost、127.0.0.1或HTTPS环境下才能获取麦克风权限。
Q: 支持哪些浏览器?
A: 支持 Chrome、Edge、Firefox、Safari 等现代浏览器。
Q: 状态流转顺序是怎样的?
A:
null→init→ing→end