FunASR录音文件识别Java SDK

本文介绍FunASR录音文件识别Java SDK的参数和接口细节。

用户指南:关于模型介绍和选型建议请参见录音文件识别

在线体验:暂不支持。

前提条件

  • 已开通服务并获取API Key。请配置API Key到环境变量,而非硬编码在代码中,防范因代码泄露导致的安全风险。

    说明

    当您需要为第三方应用或用户提供临时访问权限,或者希望严格控制敏感数据访问、删除等高风险操作时,建议使用临时鉴权Token

    与长期有效的 API Key 相比,临时鉴权 Token 具备时效性短(60秒)、安全性高的特点,适用于临时调用场景,能有效降低API Key泄露的风险。

    使用方式:在代码中,将原本用于鉴权的 API Key 替换为获取到的临时鉴权 Token 即可。

  • 安装最新版DashScope SDK

  • 在阿里云百炼控制台的FunASR模型列表页面,点击操作列的立即申请按钮提交申请,审核通过后方可使用。

模型与价格

模型名称

版本

单价

免费额度

fun-asr

当前等同fun-asr-2025-08-25

稳定版

0.00022元/秒

36,000秒(10小时)

该模型开放邀测(所有人可见,申请使用),申请通过后发放免费额度

有效期180

fun-asr-2025-08-25

快照版

更多说明:限流功能特性

约束

服务不支持本地音视频文件直传(也不支持base64格式音频),输入源需为可通过公网访问的文件URL(支持HTTP/HTTPS协议,示例:https://your-domain.com/file.mp3)。

URL通过fileUrls参数指定,单次请求最多支持100URL。

  • 音频格式

    aacamraviflacflvm4amkvmovmp3mp4mpegoggopuswavwebmwmawmv

    重要

    由于音视频格式及其变种众多,技术上无法穷尽测试,API不能保证所有格式均能够被正确识别。请通过测试验证您所提供的文件能够获得正常的语音识别结果。

  • 音频采样率:任意

  • 音频文件大小和时长

    音频文件不超过2GB;时长在12小时以内。

    如果希望处理的文件超过了上述限制,可尝试对文件进行预处理以降低文件尺寸。有关文件预处理的最佳实践可以查阅预处理视频文件以提高文件转写效率(针对录音文件识别场景)

  • 批处理音频数目

    单次请求最多支持100个文件URL。

  • 可识别语言:中文、英文

快速开始

核心类(Transcription)提供了异步提交任务、同步等待任务结束和异步查询任务执行结果的接口。可通过如下两种调用方式进行录音文件识别:

  • 异步提交任务+同步等待任务结束:提交任务后,阻塞当前线程直到任务结束并获取识别结果。

  • 异步提交任务+异步查询任务执行结果:提交任务后,在需要的时候通过调用查询任务接口获取任务的执行结果。

异步提交任务+同步等待任务结束

image
  1. 配置请求参数

  2. 实例化核心类(Transcription)

  3. 调用核心类(Transcription)asyncCall方法异步提交任务。

    说明
    • 文件转写服务对通过API提交的任务采取尽力服务原则进行处理。任务提交后将进入排队(PENDING)状态,排队时间取决于队列长度和文件时长,无法明确给出,通常在数分钟内。任务开始处理后,语音识别将以数百倍加速完成。

    • 每一个任务完成后,识别结果和URL下载链接有效期为24小时,超时后无法查询任务或通过先前查询结果中的URL下载结果。

  4. 调用核心类(Transcription)wait方法同步等待任务结束。

    任务的状态包括PENDINGRUNNINGSUCCEEDEDFAILED。当任务处于PENDINGRUNNING状态时,wait接口将被阻塞。当任务处于SUCCEEDEDFAILED状态时,wait接口不再阻塞并返回任务的执行结果。

    wait返回任务执行结果(TranscriptionResult)

点击查看完整示例

import com.alibaba.dashscope.audio.asr.transcription.*;
import com.google.gson.*;

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // 创建转写请求参数
        TranscriptionParam param =
                TranscriptionParam.builder()
                        // 若没有将API Key配置到环境变量中,需将apiKey替换为自己的API Key
                        //.apiKey("apikey")
                        .model("fun-asr")
                        .fileUrls(
                                Arrays.asList(
                                        "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
                                        "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav"))
                        .build();
        try {
            Transcription transcription = new Transcription();
            // 提交转写请求
            TranscriptionResult result = transcription.asyncCall(param);
            System.out.println("RequestId: " + result.getRequestId());
            // 阻塞等待任务完成并获取结果
            result = transcription.wait(
                    TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
            // 打印结果
            System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(result.getOutput()));
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
        System.exit(0);
    }
}

异步提交任务+异步查询任务执行结果

image
  1. 配置请求参数

  2. 实例化核心类(Transcription)

  3. 调用核心类(Transcription)asyncCall方法异步提交任务。

    说明
    • 文件转写服务对通过API提交的任务采取尽力服务原则进行处理。任务提交后将进入排队(PENDING)状态,排队时间取决于队列长度和文件时长,无法明确给出,通常在数分钟内。任务开始处理后,语音识别将以数百倍加速完成。

    • 每一个任务完成后,识别结果和URL下载链接有效期为24小时,超时后无法查询任务或通过先前查询结果中的URL下载结果。

  4. 循环调用核心类(Transcription)fetch方法直到获取最终的任务结果。

    当任务状态为SUCCEEDEDFAILED时,停止轮询并处理结果。

    fetch返回任务执行结果(TranscriptionResult)

点击查看完整示例

import com.alibaba.dashscope.audio.asr.transcription.*;
import com.alibaba.dashscope.common.TaskStatus;
import com.google.gson.*;

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // 创建转写请求参数
        TranscriptionParam param =
                TranscriptionParam.builder()
                        // 若没有将API Key配置到环境变量中,需将apiKey替换为自己的API Key
                        //.apiKey("apikey")
                        .model("fun-asr")
                        .fileUrls(
                                Arrays.asList(
                                        "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
                                        "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav"))
                        .build();
        try {
            Transcription transcription = new Transcription();
            // 提交转写请求
            TranscriptionResult result = transcription.asyncCall(param);
            System.out.println("RequestId: " + result.getRequestId());
            // 循环获取任务执行结果,直到任务结束
            while (true) {
                result = transcription.fetch(TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
                if (result.getTaskStatus() == TaskStatus.SUCCEEDED || result.getTaskStatus() == TaskStatus.FAILED) {
                    break;
                }
                Thread.sleep(1000);
            }
            // 打印结果
            System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(result.getOutput()));
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
        System.exit(0);
    }
}

请求参数

请求参数通过TranscriptionParam的链式方法进行配置。

点击查看示例

TranscriptionParam param = TranscriptionParam.builder()
  .model("fun-asr")
  .fileUrls(
          Arrays.asList(
                  "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
                  "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav"))
  .build();

参数

类型

默认值

是否必须

说明

model

String

-

指定用于音视频文件转写的模型名。参见模型与价格

fileUrls

List<String>

-

音视频文件转写的URL列表,支持HTTP / HTTPS协议,单次请求最多支持100URL。

vocabularyId

String

-

热词ID,此次语音识别中生效此热词ID对应的热词信息。默认不启用。使用方法请参考定制热词

channelId

List<Integer>

[0]

指定在多音轨文件中需要进行语音识别的音轨索引,以List的形式给出,例如[0]表示仅识别第一条音轨,[0, 1]表示同时识别前两条音轨。

specialWordFilter

String

-

指定在语音识别过程中需要处理的敏感词,并支持对不同敏感词设置不同的处理方式。

若未传入该参数,系统将启用系统内置的敏感词过滤逻辑,识别结果中与阿里云百炼敏感词表匹配的词语将被替换为等长的*

若传入该参数,则可实现以下敏感词处理策略:

  • 替换为 *:将匹配的敏感词替换为等长的 *

  • 直接过滤:将匹配的敏感词从识别结果中完全移除。

该参数的值应为一个 JSON 字符串,其结构如下所示:

{
  "filter_with_signed": {
    "word_list": ["测试"]
  },
  "filter_with_empty": {
    "word_list": ["开始", "发生"]
  },
  "system_reserved_filter": true
}

JSON字段说明:

  • filter_with_signed

    • 类型:对象。

    • 是否必填:否。

    • 描述:配置需替换为*的敏感词列表。识别结果中匹配的词语将被等长的 * 替代。

    • 示例:以上述JSON为例,“帮我测试一下这段代码”的语音识别结果将会是“帮我**一下这段代码”。

    • 内部字段:

      • word_list: 字符串数组,列出需被替换的敏感词。

  • filter_with_empty

    • 类型:对象。

    • 是否必填:否。

    • 描述:配置需从识别结果中移除(过滤)的敏感词列表。识别结果中匹配的词语将被完全删除。

    • 示例:以上述JSON为例,“比赛这就要开始了吗?”的语音识别结果将会是“比赛这就要了吗”。

    • 内部字段:

      • word_list: 字符串数组,列出需被完全移除(过滤)的敏感词。

  • system_reserved_filter

    • 类型:布尔值。

    • 是否必填:否。

    • 默认值:true。

    • 描述:是否启用系统预置的敏感词规则。设为true时,将同时启用系统内置的敏感词过滤逻辑,识别结果中与阿里云百炼敏感词表匹配的词语将被替换为等长的*

diarizationEnabled

Boolean

false

自动说话人分离,默认关闭。

仅适用于单声道音频,多声道音频不支持说话人分离。

启用该功能后,识别结果中将显示speaker_id字段,用于区分不同说话人。

有关speaker_id的示例,请参见识别结果说明

speakerCount

Integer

-

说话人数量参考值。取值范围为2100的整数(包含2100)。

开启说话人分离功能后(diarizationEnabled设置为true)生效。

默认自动判断说话人数量,如果配置此项,只能辅助算法尽量输出指定人数,无法保证一定会输出此人数。

apiKey

String

-

用户API Key。如已将API Key配置到环境变量,则无须在代码中设置。否则一定要在代码中进行设置。

响应结果

任务执行结果(TranscriptionResult

TranscriptionResult封装了当前任务执行结果。

接口/方法

参数

返回值

描述

public String getRequestId()

requestId

获取requestId。

public String getTaskId()

taskId

获取taskId。

public TaskStatus getTaskStatus()

TaskStatus,任务状态

获取任务状态。

TaskStatus为枚举类,只需关注PENDINGRUNNINGSUCCEEDEDFAILED这四个状态即可。

说明

当任务包含多个子任务时,只要存在任一子任务成功,整个任务状态将标记为SUCCEEDED,需通过subtask_status字段判断具体子任务结果。

public List<TranscriptionTaskResult> getResults()

子任务执行结果(TranscriptionTaskResult)

获取子任务执行结果(TranscriptionTaskResult)

每个任务对一个或多个音频文件进行识别,不同音频文件在不同的子任务中处理,因此每个任务对应一到多个子任务。

public JsonObject getOutput()

任务执行结果,为JSON格式的数据

获取任务执行结果。

该结果是一个JSON格式的数据,如果您想通过getOutput接口获取任务执行结果,请您在获取结果后自行解析。

点击查看JSON示例

正常示例

{
    "task_id":"0795ff8c-b666-4e91-bb8b-xxx",
    "task_status":"SUCCEEDED",
    "submit_time":"2025-02-13 16:12:09.109",
    "scheduled_time":"2025-02-13 16:12:09.128",
    "end_time":"2025-02-13 16:12:10.189",
    "results":[
        {
            "file_url":"https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav",
            "transcription_url":"https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/prod/paraformer-v2/20250213/16%3A12/34604a7b-579a-4223-8797-5116a49b07ec-1.json?Expires=1739520730&OSSAccessKeyId=yourOSSAccessKeyId&Signature=tMqyH56oB5rDW9%2FFqD8Yo%2F3WaPk%3D",
            "subtask_status":"SUCCEEDED"
        },
        {
            "file_url":"https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
            "transcription_url":"https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/prod/paraformer-v2/20250213/16%3A12/3baafe5f-d09d-46c6-8b01-724927670edb-1.json?Expires=1739520730&OSSAccessKeyId=yourOSSAccessKeyId&Signature=BF7vPxlsJN9hkJlY%2BLReezxOwK8%3D",
            "subtask_status":"SUCCEEDED"
        }
    ],
    "task_metrics":{
        "TOTAL":2,
        "SUCCEEDED":2,
        "FAILED":0
    }
}

异常示例

code”为错误码,“message”为错误信息,只有异常情况才有这两个字段,您可以通过这两个字段,对照错误码排查问题。

{
    "task_id": "7bac899c-06ec-4a79-8875-xxxxxxxxxxxx",
    "task_status": "SUCCEEDED",
    "submit_time": "2024-12-16 16:30:59.170",
    "scheduled_time": "2024-12-16 16:30:59.204",
    "end_time": "2024-12-16 16:31:02.375",
    "results": [
        {
            "file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/sensevoice/long_audio_demo_cn.mp3",
            "transcription_url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/prod/paraformer-v2/20241216/xxxx",
            "subtask_status": "SUCCEEDED"
        },
        {
            "file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/sensevoice/rich_text_exaple_1.wav",
            "code": "InvalidFile.DownloadFailed",
            "message": "The audio file cannot be downloaded.",
            "subtask_status": "FAILED"
        }
    ],
    "task_metrics": {
        "TOTAL": 2,
        "SUCCEEDED": 1,
        "FAILED": 1
    }
}

子任务执行结果(TranscriptionTaskResult

TranscriptionTaskResult封装了子任务执行结果。子任务对单个音频文件进行识别。

接口/方法

参数

返回值

描述

public String getFileUrl()

被识别的音频文件的链接

获取被识别音频文件的链接。

public String getTranscriptionUrl()

识别结果对应的链接

获取识别结果对应的链接。该链接有效期为24小时,超时后无法查询任务或通过先前查询结果中的URL下载结果。

识别结果保存为JSON文件,您可以通过上述链接下载该文件或直接通过HTTP请求读取该文件中的内容。

JSON数据中各字段含义请参见识别结果说明

public TaskStatus getSubTaskStatus()

TaskStatus,子任务状态

获取子任务状态。

TaskStatus为枚举类,只需关注PENDINGRUNNINGSUCCEEDEDFAILED这四个状态即可。

public String getMessage()

任务执行过程中关键信息,可能为空

获取任务执行过程中的关键信息。

当任务失败时,可查看该内容分析原因。

识别结果说明

识别结果保存为JSON文件。

点击查看识别结果示例

{
    "file_url":"https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
    "properties":{
        "audio_format":"pcm_s16le",
        "channels":[
            0
        ],
        "original_sampling_rate":16000,
        "original_duration_in_milliseconds":3834
    },
    "transcripts":[
        {
            "channel_id":0,
            "content_duration_in_milliseconds":3720,
            "text":"Hello world, 这里是阿里巴巴语音实验室。",
            "sentences":[
                {
                    "begin_time":100,
                    "end_time":3820,
                    "text":"Hello world, 这里是阿里巴巴语音实验室。",
                    "sentence_id":1,
                    "speaker_id":0, //当开启自动说话人分离功能时才会显示该字段
                    "words":[
                        {
                            "begin_time":100,
                            "end_time":596,
                            "text":"Hello ",
                            "punctuation":""
                        },
                        {
                            "begin_time":596,
                            "end_time":844,
                            "text":"world",
                            "punctuation":", "
                        }
                        // 这里省略其它内容
                    ]
                }
            ]
        }
    ]
}

需要关注的参数如下:

参数

类型

说明

audio_format

string

源文件中音频的格式。

channels

array[integer]

源文件中音频的音轨索引信息,对单轨音频返回[0],对双轨音频返回[0, 1],以此类推。

original_sampling_rate

integer

源文件中音频的采样率(Hz)。

original_duration_in_milliseconds

integer

源文件中的原始音频时长(ms)。

channel_id

integer

转写结果的音轨索引,以0为起始。

content_duration

integer

音轨中被判定为语音内容的时长(ms)。

重要

语音识别模型服务仅对音轨中被判定为语音内容的时长进行语音转写,并据此进行计量计费,非语音内容不计量、不计费。通常情况下语音内容时长会短于原始音频时长。由于对是否存在语音内容的判定是由AI模型给出的,可能与实际情况存在一定误差。

transcript

string

段落级别的语音转写结果。

sentences

array

句子级别的语音转写结果。

words

array

词级别的语音转写结果。

begin_time

integer

开始时间戳(ms)。

end_time

integer

结束时间戳(ms)。

text

string

语音转写结果。

speaker_id

integer

当前说话人的索引,以0为起始,用于区分不同的说话人。

仅在启用说话人分离功能时,该字段才会显示于识别结果中。

punctuation

string

预测出的词之后的标点符号(如有)。

关键接口

任务查询参数配置类(TranscriptionQueryParam

TranscriptionQueryParam在等待任务完成(调用Transcriptionwait方法)或查询任务执行结果(调用Transcriptionfetch方法)时用到。

通过静态方法FromTranscriptionParam创建TranscriptionQueryParam实例。

点击查看示例

// 创建转写请求参数
TranscriptionParam param =
        TranscriptionParam.builder()
                // 若没有将API Key配置到环境变量中,需将apiKey替换为自己的API Key
                //.apiKey("apikey")
                .model("fun-asr")
                .fileUrls(
                        Arrays.asList(
                                "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
                                "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav"))
                .build();
try {
    Transcription transcription = new Transcription();
    // 提交转写请求
    TranscriptionResult result = transcription.asyncCall(param);
    System.out.println("RequestId: " + result.getRequestId());
    TranscriptionQueryParam queryParam = TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId());
    
} catch (Exception e) {
    System.out.println("error: " + e);
}

接口/方法

参数

返回值

描述

public static TranscriptionQueryParam FromTranscriptionParam(TranscriptionParam param, String taskId)
  • paramTranscriptionParam实例

  • taskId:任务ID

TranscriptionQueryParam实例

创建TranscriptionQueryParam实例。

核心类(Transcription

Transcription可以通过“import com.alibaba.dashscope.audio.asr.transcription.*;”方式引入。它的关键接口如下:

接口/方法

参数

返回值

描述

public TranscriptionResult asyncCall(TranscriptionParam param)

param:语音识别相关参数,TranscriptionParam实例

任务执行结果(TranscriptionResult)

异步提交语音识别任务。

public TranscriptionResult wait(TranscriptionQueryParam queryParam)

queryParamTranscriptionQueryParam实例

任务执行结果(TranscriptionResult)

阻塞当前线程直到异步任务结束(任务状态为SUCCEEDEDFAILED)。

public TranscriptionResult fetch(TranscriptionQueryParam queryParam)

queryParamTranscriptionQueryParam实例

任务执行结果(TranscriptionResult)

异步查询当前任务执行结果。

其他接口:批量查询任务状态/取消任务

详情请参见管理异步任务:支持批量查询24小时内提交的录音文件识别任务,同时支持取消PENDING(排队)状态的任务。

错误码

如遇报错问题,请参见错误信息进行排查。

当任务包含多个子任务时,只要存在任一子任务成功,整个任务状态将标记为SUCCEEDED,需通过subtask_status字段判断具体子任务结果。

错误返回示例:

{
    "task_id": "7bac899c-06ec-4a79-8875-xxxxxxxxxxxx",
    "task_status": "SUCCEEDED",
    "submit_time": "2024-12-16 16:30:59.170",
    "scheduled_time": "2024-12-16 16:30:59.204",
    "end_time": "2024-12-16 16:31:02.375",
    "results": [
        {
            "file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/sensevoice/long_audio_demo_cn.mp3",
            "transcription_url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/prod/paraformer-v2/20241216/xxxx",
            "subtask_status": "SUCCEEDED"
        },
        {
            "file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/sensevoice/rich_text_exaple_1.wav",
            "code": "InvalidFile.DownloadFailed",
            "message": "The audio file cannot be downloaded.",
            "subtask_status": "FAILED"
        }
    ],
    "task_metrics": {
        "TOTAL": 2,
        "SUCCEEDED": 1,
        "FAILED": 1
    }
}

常见问题

功能特性

Q:是否支持Base64编码方式的音频?

不支持Base64编码方式的音频。仅支持可通过公网访问的 URL 所指向的音频的识别,不支持识别二进制流,也不支持直接识别本地文件。

Q:如何将音频文件以公网可访问的URL形式提供?

通常遵循以下几个步骤(这里为您提供一种思路,具体情况因不同存储产品而异,推荐将音频上传至阿里云OSS):

1、选择存储和托管方式

如以下这几种:

  • 对象存储服务(推荐):

    • 使用云服务商的对象存储服务(如阿里云OSS),将音频文件上传到存储桶中,并设置为公开访问。

    • 优点:高可用性、支持 CDN 加速、易于管理。

  • Web 服务器:

    • 将音频文件放置在支持 HTTP/HTTPS 访问的 Web 服务器上(如 Nginx、Apache)。

    • 优点:适合小型项目或本地测试。

  • 内容分发网络(CDN):

    • 将音频文件托管在 CDN 上,通过 CDN 提供的 URL 访问。

    • 优点:加速文件传输,适合高并发场景。

2、上传音频文件

根据选择的存储/托管方式,将音频上传,如:

  • 对象存储服务:

    • 登录云服务商的控制台,创建存储桶。

    • 上传音频文件,并设置文件权限为“公共读”或生成临时访问链接。

  • Web 服务器:

    • 将音频文件放置在服务器指定目录下(如 /var/www/html/audio/)。

    • 确保文件可以通过 HTTP/HTTPS 访问。

3、生成公网可访问的URL

例如:

  • 对象存储服务:

    • 文件上传后,系统会自动生成一个公网访问 URL(通常格式为 https://<bucket-name>.<region>.aliyuncs.com/<file-name>)。

    • 如果需要更友好的域名,可以绑定自定义域名并开启 HTTPS。

  • Web 服务器:

    • 文件的访问 URL 通常是服务器地址加上文件路径(如 https://your-domain.com/audio/file.mp3)。

  • CDN:

    • 配置 CDN 加速后,使用 CDN 提供的 URL(如 https://cdn.your-domain.com/audio/file.mp3)。

4、验证URL的可用性

公网环境下,确保生成的 URL 可以正常访问,例如:

  • 在浏览器中打开 URL,检查是否能播放音频文件。

  • 使用工具(如 curl 或 Postman)验证 URL 是否返回正确的 HTTP 响应(状态码 200)。

Q:多久能获取识别结果?

任务提交后将进入排队(PENDING)状态,排队时间取决于队列长度和文件时长,无法明确给出,通常在数分钟内,请耐心等待。并且音频时长越长,所需时间越久。

故障排查

如遇代码报错问题,请根据错误码中的信息进行排查。

Q:一直轮询不到结果?

可能是限流原因,请耐心等待。

Q:无法识别语音(无识别结果)是什么原因?

请检查请求参数中的音频格式(format)和采样率(sampleRate/sample_rate)设置是否正确且符合参数约束。以下为常见错误示例:

  • 音频文件扩展名为 .wav,但实际为 MP3 格式,而请求参数 format 设置为 mp3(参数设置错误)。

  • 音频采样率为 3600Hz,但请求参数 sampleRate/sample_rate 设置为 48000(参数设置错误)。

可以使用ffprobe工具获取音频的容器、编码、采样率、声道等信息:

ffprobe -v error -show_entries format=format_name -show_entries stream=codec_name,sample_rate,channels -of default=noprint_wrappers=1 input.xxx