使用Paraformer非实时语音识别HarmonyOS SDK将音视频文件转换为文本。
用户指南: 参见非实时语音识别。
快速开始
-
获取 API Key: 参见获取与配置 API Key。建议将 API Key 配置到环境变量中。
说明当需要为第三方应用或用户提供临时访问权限,或者希望严格控制敏感数据访问、删除等高风险操作时,建议使用临时 API Key。临时 API Key 默认有效期为60秒,过期后需重新获取。
-
下载 SDK 并运行示例代码:
- 下载最新 SDK 整合包。
- 解压 TAR 包。在
neonui目录中获取 HAR 格式 SDK,并添加到项目依赖。 需要 C++ 接入时,使用 TAR 包内的native/libs与native/include获取动态库和头文件。 - 用 DevEco Studio 打开工程。示例代码位于
DashParaformerFileTranscriberPage.ets中,替换 API Key 后即可体验功能。
调用步骤
同步模式
- 初始化 SDK。
- 按业务需求配置相关参数。
- 调用
startFileTranscriber启动识别任务,并将async_request设为false。 - 在
onFileTransEventCallback回调中监听EVENT_FILE_TRANS_RESULT事件,获取最终识别结果。 - 调用
release释放 SDK 资源。
异步模式
- 初始化 SDK。
- 按业务需求配置相关参数。
- 调用
startFileTranscriber启动识别任务,并将async_request设为true。 - 调用
queryFileTranscriber主动查询识别进度或结果。 - 在
onFileTransEventCallback回调中监听EVENT_FILE_TRANS_QUERY_RESULT事件,获取当前查询结果。 - 在
onFileTransEventCallback回调中监听EVENT_FILE_TRANS_RESULT事件,获取最终识别结果。 - 调用
release释放 SDK 资源。
请求参数
连接与控制参数
在 initializeFileTrans 接口的 parameters 参数中传入 JSON 字符串进行配置。
参数示例:以下为 JSON 字符串示例,参数未完整列出。请按实际需求在编码时补充:
{
"url": "wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/asr/transcription",
"apikey": "st-****",
"device_id": "my_device_id",
"service_mode": "1"
}
- 参数说明
| 参数 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
url | string | 是 | 服务地址,固定为 |
apikey | string | 是 | API Key。建议使用时效性短、安全性更高的临时API Key,以降低长期有效Key泄露的风险。 |
service_mode | string | 是 | 运行模式。非实时语音识别固定为 |
device_id | string | 是 | 用于标识终端用户的唯一字符串,可设为应用内用户ID或客户端生成的设备唯一标识符。此ID主要用于日志追踪和问题排查。 |
debug_path | string | 否 | 日志文件的存储路径。 此参数仅在调用initializeFileTrans接口时将 |
max_log_file_size | number | 否 | 设定日志文件的最大字节数。 此参数仅在调用initializeFileTrans接口时将 |
语音识别效果参数
通过 setParams 接口配置 nls_config 参数,或者通过 startFileTranscriber 接口配置所有语音识别效果参数。
参数示例:以下为 JSON 字符串示例,参数未完整列出。请按实际需求在编码时补充:
{
"file_urls": [
"{YOUR_AUDIO_URL}"
],
"async_request": false,
"nls_config": {
"model":"paraformer-v2",
"disfluency_removal_enabled":false,
"timestamp_alignment_enabled": false
}
}
- 参数说明
| 参数 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
file_urls | array[string] | 是 | 音视频文件转写的URL列表,支持HTTP / HTTPS协议,单次请求仅支持1个URL。 若录音文件存储在阿里云OSS,使用SDK方式不支持使用以 oss://为前缀的临时 URL。 - 音频格式: 重要由于音视频格式及其变种众多,技术上无法穷尽测试,API不能保证所有格式均能够被正确识别。请通过测试验证您所提供的文件能够获得正常的语音识别结果。 - 音频采样率 因模型而异: - paraformer-v2 支持任意采样率 - paraformer-v1 支持任意采样率 - paraformer-8k-v2 仅支持8kHz采样率 - paraformer-8k-v1 仅支持8kHz采样率 - paraformer-mtl-v1 支持16kHz及以上采样率 - 音频文件大小和时长:音频文件不超过2GB;时长在12小时以内。 如果希望处理的文件超过了上述限制,可尝试对文件进行预处理以降低文件尺寸。有关文件预处理的最佳实践可以查阅预处理视频文件以提高文件转写效率(针对录音文件识别场景)。 |
async_request | boolean | 否 | 语音识别是否为异步请求。 默认值: |
apikey | string | 否 | |
nls_config | object | 是 | 语音识别核心配置对象,包含模型选择、识别效果控制等关键参数。 |
nls_config.model | string | 是 | 语音识别模型。 |
nls_config.language_hints | array[string] | 否 | 指定待识别语音的语言代码。该参数仅适用于paraformer-v2模型。 默认值: |
nls_config.disfluency_removal_enabled | boolean | 否 | 是否过滤语气词,如“嗯”、“啊”等。 默认值:false。 取值范围: - true:过滤 - false:不过滤 |
nls_config.timestamp_alignment_enabled | boolean | 否 | 是否启用时间戳校准功能。 默认值:false。 取值范围: - true:开启 - false:关闭 |
nls_config.special_word_filter | object | 否 | 指定在语音识别过程中需要处理的敏感词,并支持对不同敏感词设置不同的处理方式。 若未传入该参数,系统将启用系统内置的敏感词过滤逻辑,识别结果中与阿里云百炼敏感词表匹配的词语将被替换为等长的 |
nls_config.channel_id | array[integer] | 否 | 指定在多音轨音频文件中需要识别的音轨索引,索引从 0 开始。例如, 重要指定的每一个音轨都将独立计费。例如,为单个文件请求 默认值: |
nls_config.diarization_enabled | boolean | 否 | 自动说话人分离,默认关闭。 仅适用于单声道音频,多声道音频不支持说话人分离。 启用该功能后,识别结果中将显示 说明如果启用说话人分离功能,建议音频时长不超过2小时,否则可能导致识别失败或超时。 有关 |
nls_config.speaker_count | integer | 否 | 说话人数量参考值。若要使用该功能,需将 |
nls_config.vocabulary_id | string | 否 | 热词词表ID,用于提升特定词汇的识别准确率。该参数适用于v2及更高版本模型。热词的使用方法请参见定制热词。 |
nls_config.resources | array[object] | 否 | 热词资源配置,用于v1版本模型。功能与 |
关键接口
NativeNui
initializeFileTrans
初始化语音转录 SDK 实例。在调用 release 前禁止重复初始化。
说明与实时语音识别不同,非实时(录音文件)转录必须使用 initializeFileTrans 方法并传入 INativeFileTransCallback 回调,而不是 initialize。
该接口会阻塞调用线程,请在非 UI 线程中调用。
- 方法签名
public initializeFileTrans(callback: INativeFileTransCallback,
parameters: string,
level: number,
save_log: boolean = false): number
- 参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
callback | INativeFileTransCallback | 文件转录事件和数据回调接口的实现。 |
parameters | string | JSON字符串,包含鉴权、连接和调试参数。参见连接与控制参数。 |
level | number | 控制SDK自身日志的打印级别,取值为Constants.LogLevel枚举。 |
save_log | boolean | 是否保存本地日志。若为 |
- 返回值说明
setParams
此接口用于独立设置或更新 nls_config 参数。如果所有参数都在startFileTranscriber中一次性提供,则无需调用此方法。
- 方法签名
public setParams(params: string): number
- 参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
params | string | 语音识别效果参数中的 |
- 返回值说明
startFileTranscriber
开始识别。
- 方法签名
public startFileTranscriber(params: string, task_id: ArrayBuffer): number
- 参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
params | string | 语音识别效果参数。 示例: |
task_id | ArrayBuffer | 任务ID缓冲区。SDK会将内部生成的随机任务ID字符串写入该缓冲区,要求缓冲区字节长度必须大于或等于33字节(示例中使用 |
- 返回值说明
queryFileTranscriber
此接口用于主动查询一个异步任务的当前状态和结果。调用成功后,结果将通过onFileTransEventCallback回调中的 EVENT_FILE_TRANS_QUERY_RESULT 事件返回。
- 方法签名
public queryFileTranscriber(task_id: string): number
- 参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
task_id | string | 待查询的任务ID(由 |
- 返回值说明
cancelFileTranscriber
立即取消当前任务。
- 方法签名
public cancelFileTranscriber(task_id: string): number
- 参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
task_id | string | 待取消的任务ID。 |
- 返回值说明
release
释放 SDK 的所有内部资源。调用后,SDK 实例将不可用;如需再次使用,必须重新调用 initializeFileTrans 进行初始化。
- 方法签名
public release(): number
- 返回值说明
GetVersion
获取当前 SDK 版本信息。
- 方法签名
public GetVersion(): string
- 返回值说明
当前 SDK 版本信息。
INativeFileTransCallback
定义文件转录过程中的事件与识别结果回调。
onFileTransEventCallback
监听文件转录事件并获取语音识别结果。
- 方法签名
onFileTransEventCallback: (event: Constants.NuiEvent, resultCode: number, finish: number,
asrResult: AsrResult, taskId: string) => void;
- 参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
event | Constants.NuiEvent | 回调事件。 |
resultCode | number | 仅在出现 |
finish | number | 任务是否结束标记。 |
asrResult | AsrResult | 语音识别结果。 |
taskId | string | 任务ID。 |
Constants.NuiEvent
HarmonyOS SDK 中事件类型通过 Constants.NuiEvent 枚举定义,以下列出录音文件转录相关的事件:
| 事件 | 说明 |
|---|---|
EVENT_FILE_TRANS_CONNECTED | 连接服务成功。 |
EVENT_FILE_TRANS_UPLOADED | 上传待识别音频文件成功。 |
EVENT_FILE_TRANS_QUERY_RESULT | 查询任务结果。 |
EVENT_FILE_TRANS_RESULT | 识别最终结果。 |
EVENT_ASR_ERROR | 语音识别过程中出现错误。 |
辅助类型
Constants.LogLevel
level 参数的取值枚举:
| 值 | 说明 |
|---|---|
LOG_LEVEL_VERBOSE | 最详细日志。 |
LOG_LEVEL_DEBUG | 调试日志。 |
LOG_LEVEL_INFO | 普通信息日志(默认)。 |
LOG_LEVEL_WARNING | 警告日志。 |
LOG_LEVEL_ERROR | 错误日志。 |
LOG_LEVEL_NONE | 关闭日志。 |
结果下载
非实时语音识别结果为异步生成,EVENT_FILE_TRANS_RESULT 事件返回的应答中包含 transcription_url,识别文本需通过该 URL 下载获取(JSON 格式)。注意该 URL 具有有效期,应及时下载。