腾讯云语音识别工具
概述
腾讯云语音识别工具是一个基于腾讯云语音识别API的智能语音转文字工具。它支持多种音频格式和语言,能够将音频文件或音频数据流转换为准确的文字内容,广泛应用于语音转录、智能客服、会议记录等场景。
核心特性
- ✅ 多格式支持: 支持WAV、MP3、PCM、M4A、AAC等主流音频格式
- ✅ 多语言识别: 支持中文、英文、日文、韩文等9种主要语言
- ✅ 高精度识别: 基于腾讯云先进的语音识别技术
- ✅ 灵活输入: 支持base64编码、Buffer数据、文件路径等多种输入方式
- ✅ 安全可靠: 内置数据验证和错误处理机制
- ✅ 详细报告: 提供完整的识别结果和执行统计信息
重要限制说明
⚠️ 使用前请注意以下限制:
- 音频时长: 最大支持60秒音频(腾讯云API限制)
- 文件大小: 最大支持5MB音频文件
- 识别模式: 仅支持一句话识别,不支持实时转录
- 网络要求: 需要稳定的网络连接访问腾讯云API
配置参数
腾讯云凭据配置
| 参数 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
secretId | string | - | ✅ | 腾讯云API密钥ID(以AKID开头) |
secretKey | string | - | ✅ | 腾讯云API密钥Key(最少20位) |
region | string | 'ap-beijing' | ❌ | 服务区域 |
识别参数配置
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
engineModelType | string | '16k_zh' | 引擎模型类型,详见支持的语言列表 |
voiceFormat | number | 1 | 音频格式:1-wav, 2-speex, 3-silk, 4-mp3, 6-m4a |
usrAudioKey | string | 'audio' | 用户音频数据标识 |
needvad | number | 1 | 是否开启静音检测:0-关闭,1-开启 |
hotwordId | string | '' | 热词表ID(可选) |
支持的语言和格式
支持的语言
| 语言 | 引擎模型类型 | 说明 |
|---|---|---|
| 中文普通话 | 16k_zh | 支持中文普通话识别 |
| 英文 | 16k_en | 支持英文识别 |
| 中英文混合 | 16k_zh_en | 支持中英文混合识别 |
| 日文 | 16k_ja | 支持日文识别 |
| 韩文 | 16k_ko | 支持韩文识别 |
| 西班牙文 | 16k_es | 支持西班牙文识别 |
| 法文 | 16k_fr | 支持法文识别 |
| 意大利文 | 16k_it | 支持意大利文识别 |
| 德文 | 16k_de | 支持德文识别 |
支持的音频格式
| 格式 | voiceFormat | 文件扩展名 | 说明 |
|---|---|---|---|
| WAV | 1 | .wav | 无损音频格式,推荐使用 |
| MP3 | 4 | .mp3 | 常用压缩音频格式 |
| M4A | 6 | .m4a | Apple音频格式 |
| PCM | - | .pcm | 原始音频数据 |
| AAC | - | .aac | 高级音频编码 |
输入参数
基本参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
audioData | string/Buffer | ✅ | 音频数据(base64编码或Buffer) |
language | string | ❌ | 识别语言,默认为'zh'(中文) |
format | string | ❌ | 音频格式,默认为'wav' |
高级参数
| 参数 | 类型 | 说明 |
|---|---|---|
customConfig | object | 自定义配置覆盖默认设置 |
hotwordId | string | 热词表ID,提高特定词汇识别准确率 |
needvad | boolean | 是否开启静音检测 |
输出结果
成功响应结构
{
"success": true,
"text": "识别出的文字内容",
"audioInfo": {
"format": "wav",
"language": "zh",
"estimatedDuration": 5.2,
"dataSize": 83200
},
"requestInfo": {
"requestId": "12345678-1234-1234-1234-123456789012",
"engineModelType": "16k_zh",
"voiceFormat": 1,
"region": "ap-beijing"
},
"executionInfo": {
"executedAt": "2024-01-15T10:30:00.000Z",
"executionTime": 1250,
"apiCallTime": 1100
}
}
字段说明
识别结果 (Recognition Result)
success: 识别是否成功text: 识别出的文字内容
音频信息 (Audio Info)
format: 音频格式language: 识别语言estimatedDuration: 预估音频时长(秒)dataSize: 音频数据大小(字节)
请求信息 (Request Info)
requestId: 请求唯一标识engineModelType: 使用的引擎模型voiceFormat: 音频格式代码region: 服务区域
执行信息 (Execution Info)
executedAt: 执行时间executionTime: 总执行时间(毫秒)apiCallTime: API调用时间(毫秒)
错误响应结构
{
"success": false,
"error": "音频时长65.5秒超过60秒限制",
"errorCode": "AUDIO_TOO_LONG",
"audioInfo": {
"format": "wav",
"language": "zh",
"estimatedDuration": 65.5,
"dataSize": 2097152
},
"executionInfo": {
"executedAt": "2024-01-15T10:30:00.000Z",
"executionTime": 50,
"failed": true
}
}
使用示例
1. 基础语音识别
最简单的使用方式,识别中文语音:
{
"id": "speech-recognition",
"type": "tencent-speech",
"config": {
"secretId": "AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"secretKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"region": "ap-beijing"
},
"inputs": {
"audioData": "UklGRigAAABXQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQQAAAAAAA==",
"language": "zh",
"format": "wav"
}
}
2. 多语言识别
识别英文语音:
{
"id": "english-recognition",
"type": "tencent-speech",
"config": {
"secretId": "AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"secretKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"engineModelType": "16k_en"
},
"inputs": {
"audioData": "{{base64_audio_data}}",
"language": "en",
"format": "mp3"
}
}
3. 文件上传识别
处理上传的音频文件:
{
"workflow": [
{
"id": "file-upload",
"type": "file-input",
"config": {
"acceptedTypes": ["audio/wav", "audio/mp3", "audio/m4a"]
}
},
{
"id": "speech-recognition",
"type": "tencent-speech",
"config": {
"secretId": "{{TENCENT_SECRET_ID}}",
"secretKey": "{{TENCENT_SECRET_KEY}}"
},
"inputs": {
"audioData": "{{file-upload.content}}",
"format": "{{file-upload.format}}"
}
}
]
}
4. 批量处理
批量处理多个音频文件:
{
"workflow": [
{
"id": "batch-recognition",
"type": "js-executor",
"inputs": {
"audioFiles": [
{"name": "audio1.wav", "data": "base64_data_1"},
{"name": "audio2.mp3", "data": "base64_data_2"},
{"name": "audio3.m4a", "data": "base64_data_3"}
],
"code": `
let results = [];
for (let file of inputs.audioFiles) {
try {
const result = await callOperator('tencent-speech', {
audioData: file.data,
format: file.name.split('.').pop()
});
results.push({
filename: file.name,
text: result.text,
success: true
});
} catch (error) {
results.push({
filename: file.name,
error: error.message,
success: false
});
}
}
return { results };
`
}
}
]
}
5. 中英混合识别
处理包含中英文混合的音频:
{
"id": "mixed-language-recognition",
"type": "tencent-speech",
"config": {
"secretId": "{{TENCENT_SECRET_ID}}",
"secretKey": "{{TENCENT_SECRET_KEY}}",
"engineModelType": "16k_zh_en"
},
"inputs": {
"audioData": "{{mixed_audio_data}}",
"language": "zh_en",
"format": "wav"
}
}
6. 热词优化识别
使用热词表提高专业术语识别准确率:
{
"id": "hotword-recognition",
"type": "tencent-speech",
"config": {
"secretId": "{{TENCENT_SECRET_ID}}",
"secretKey": "{{TENCENT_SECRET_KEY}}",
"hotwordId": "your_hotword_table_id"
},
"inputs": {
"audioData": "{{professional_audio_data}}",
"language": "zh",
"format": "wav"
}
}
环境配置
1. 获取腾讯云密钥
- 登录 腾讯云控制台
- 进入 访问管理 > API密钥管理
- 点击 新建密钥 创建新的API密钥
- 记录
SecretId和SecretKey
2. 环境变量配置
在环境变量中设置密钥信息:
# .env 文件
TENCENT_SECRET_ID=AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TENCENT_SECRET_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TENCENT_REGION=ap-beijing
3. 权限配置
确保API密钥具有语音识别服务权限:
{
"version": "2.0",
"statement": [
{
"effect": "allow",
"action": [
"asr:SentenceRecognition"
],
"resource": "*"
}
]
}
工作流集成
在工作流中使用
-
添加语音识别节点
- 从工具库中选择"腾讯云语音识别"
- 配置腾讯云凭据和识别参数
-
连接数据源
- 将音频输入节点的输出连接到语音识别节点
- 支持文件上传、URL下载等多种数据源
-
后续处理
- 将识别结果传递给文本处理节点
- 或用于内容分析、情感分析等场景
与其他工具配合
{
"workflow": [
{
"id": "audio-input",
"type": "file-input",
"config": {
"acceptedTypes": ["audio/*"]
}
},
{
"id": "speech-to-text",
"type": "tencent-speech",
"config": {
"secretId": "{{TENCENT_SECRET_ID}}",
"secretKey": "{{TENCENT_SECRET_KEY}}"
},
"inputs": {
"audioData": "{{audio-input.content}}",
"format": "{{audio-input.format}}"
}
},
{
"id": "text-analysis",
"type": "text-analyzer",
"inputs": {
"text": "{{speech-to-text.text}}"
}
},
{
"id": "save-result",
"type": "database-save",
"inputs": {
"table": "transcriptions",
"data": {
"original_audio": "{{audio-input.filename}}",
"transcribed_text": "{{speech-to-text.text}}",
"confidence": "{{text-analysis.confidence}}",
"created_at": "{{now}}"
}
}
}
]
}
性能优化
最佳实践
-
音频质量优化
- 使用16kHz采样率的音频文件
- 保持音频清晰,避免背景噪音
- 控制音频时长在60秒以内
-
格式选择
- 优先使用WAV格式获得最佳识别效果
- MP3格式在保持质量的同时减小文件大小
- 避免过度压缩的音频格式
-
批量处理优化
- 对于大量音频文件,考虑分批处理
- 使用并发控制避免API调用频率限制
- 实现重试机制处理临时网络问题
性能指标
- 识别准确率: 在清晰音频条件下可达95%以上
- 处理速度: 通常在1-3秒内完成识别
- 支持时长: 最大60秒音频
- 文件大小: 最大5MB音频文件
错误处理
常见错误类型
| 错误代码 | 错误信息 | 原因 | 解决方案 |
|---|---|---|---|
INVALID_CREDENTIALS | 凭据无效 | SecretId或SecretKey错误 | 检查腾讯云API密钥 |
AUDIO_TOO_LONG | 音频时长超限 | 音频超过60秒 | 分割音频或使用其他识别方案 |
FILE_TOO_LARGE | 文件过大 | 音频文件超过5MB | 压缩音频或降低音质 |
UNSUPPORTED_FORMAT | 格式不支持 | 音频格式不在支持列表中 | 转换为支持的格式 |
NETWORK_ERROR | 网络错误 | 网络连接问题 | 检查网络连接和防火墙设置 |
错误响应处理
{
"workflow": [
{
"id": "speech-recognition",
"type": "tencent-speech",
"config": {
"secretId": "{{TENCENT_SECRET_ID}}",
"secretKey": "{{TENCENT_SECRET_KEY}}"
},
"inputs": {
"audioData": "{{audio_data}}"
},
"onError": {
"continue": true,
"defaultValue": {
"success": false,
"text": "",
"error": "语音识别失败,请检查音频格式和网络连接"
}
}
},
{
"id": "handle-result",
"type": "js-executor",
"inputs": {
"result": "{{speech-recognition}}",
"code": `
if (inputs.result.success) {
return {
status: 'success',
message: '识别成功',
text: inputs.result.text
};
} else {
return {
status: 'error',
message: inputs.result.error || '识别失败',
text: ''
};
}
`
}
}
]
}
故障排除
调试技巧
-
检查音频数据
// 验证base64音频数据
const isValidBase64 = (str) => {
try {
return btoa(atob(str)) === str;
} catch (err) {
return false;
}
}; -
测试API连接
# 使用curl测试腾讯云API连接
curl -X POST https://asr.tencentcloudapi.com/ \
-H "Content-Type: application/json" \
-d '{"Action":"SentenceRecognition","Version":"2018-08-08"}' -
音频格式检查
// 检查音频文件头部信息
const checkAudioFormat = (buffer) => {
const header = buffer.slice(0, 12).toString('ascii');
if (header.startsWith('RIFF') && header.includes('WAVE')) {
return 'wav';
} else if (buffer[0] === 0xFF && (buffer[1] & 0xE0) === 0xE0) {
return 'mp3';
}
return 'unknown';
};
常见问题
Q: 为什么我的音频识别准确率很低? A: 检查音频质量,确保采样率为16kHz,音频清晰无噪音,说话清楚。
Q: 如何处理超过60秒的长音频? A: 需要将长音频分割成60秒以内的片段分别识别,然后合并结果。
Q: 支持实时语音识别吗? A: 当前版本仅支持一句话识别,不支持实时流式识别。
Q: 如何提高专业术语的识别准确率?
A: 可以创建热词表并在配置中指定hotwordId参数。
版本信息
- 当前版本: 1.1.0
- 兼容性: Node.js 14+
- 依赖项: tencentcloud-sdk-nodejs
- 更新日志:
- v1.1.0: 修正功能限制,移除不支持的实时转录功能
- v1.0.0: 初始版本发布