Todos os produtos
Search
Central de documentação

Alibaba Cloud Model Studio:Qwen-Audio-3.0-ASR-Flash-Filetrans/Fun-ASR non-real-time speech recognition Java SDK

Última atualização: Sep 02, 2026

Este tópico descreve os parâmetros e os detalhes da API do SDK Java para reconhecimento de fala não em tempo real Qwen-Audio-3.0-ASR-Flash-Filetrans/Fun-ASR.

Guia do usuário:Non-real-time speech recognition. Para requisitos de entrada, como formatos de áudio suportados, limites de tamanho de arquivo e limites de duração, consulte Audio specifications.

Pré-requisitos

Você ativou o service e Obtain an API key. Utilize Configure API key as an environment variable em vez de codificá-la diretamente no seu código para evitar riscos de segurança causados por vazamento de código.

ObservaçãoQuando você precisar fornecer acesso temporário a aplicativos ou usuários terceiros, ou quando quiser controlar rigorosamente operações de alto risco, como acessar ou excluir dados confidenciais, recomendamos usar temporary authentication tokens.

Em comparação com as API Keys de longo prazo, os tokens de autenticação temporários têm um curto período de validade (60 segundos) e maior segurança, sendo adequados para cenários de chamada temporária e reduzindo efetivamente o risco de vazamento da API Key.

Uso: No seu código, substitua a API Key originalmente usada para autenticação pelo token de autenticação temporário obtido.

Início rápido

O Core class (Transcription) fornece interfaces para enviar uma tarefa de forma assíncrona, aguardar sincronamente a conclusão da tarefa e consultar o resultado da tarefa de forma assíncrona. Execute o reconhecimento de fala não em tempo real de uma das duas maneiras seguintes:

  • Envie uma tarefa de forma assíncrona e aguarde sincronamente sua conclusão: após enviar a tarefa, a thread atual é bloqueada até que a tarefa termine e o resultado do reconhecimento seja retornado.
  • Envie uma tarefa de forma assíncrona e consulte o resultado da tarefa de forma assíncrona: após enviar a tarefa, chame a interface de consulta para obter o resultado da tarefa sempre que necessário.

Enviar uma tarefa de forma assíncrona e aguardar sincronamente sua conclusão

image
  1. Configure o Request parameters.

  2. Instancie um Core class (Transcription).

  3. Chame o método asyncCall do Core class (Transcription) para enviar a tarefa de forma assíncrona.

    Observação

    • O service de transcrição de arquivos processa tarefas enviadas por meio da API com base no melhor esforço. Após o envio, a tarefa entra no estado de fila (PENDING). O tempo de espera depende do tamanho da fila e da duração do arquivo, portanto não pode ser definido com precisão, mas geralmente fica dentro de alguns minutos. Assim que o processamento começa, o reconhecimento de fala é concluído a uma velocidade centenas de vezes superior ao tempo real.
    • Após a conclusão de cada tarefa, o resultado do reconhecimento e a URL de download permanecem válidos por 24 horas. Depois que expiram, não é mais possível consultar a tarefa ou baixar o resultado pela URL retornada em uma consulta anterior.
  4. Chame o método wait do Core class (Transcription) para aguardar sincronamente a conclusão da tarefa.

    Uma tarefa pode estar no estado PENDING, RUNNING, SUCCEEDED ou FAILED. Enquanto a tarefa estiver no estado PENDING ou RUNNING, a interface wait permanece bloqueada. Quando a tarefa atinge o estado SUCCEEDED ou FAILED, a interface wait desbloqueia e retorna o resultado da tarefa.

    O método wait retorna um Task result (TranscriptionResult).

Clique para visualizar o exemplo completo

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

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // The following is the configuration for the Singapore region. When calling, replace "{WorkspaceId}" with your actual workspace ID. Configurations differ across regions.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
        // Create the transcription request parameters
        TranscriptionParam param =
                TranscriptionParam.builder()
                        // The API Key differs between the Singapore and Beijing regions. Get an API Key: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
                        // If you have not configured the environment variable, replace the following line with your Model Studio API Key: .apiKey("sk-xxx")
                        //.apiKey("apikey")
                        .model("qwen-audio-3.0-asr-flash-filetrans") // This uses qwen-audio-3.0-asr-flash-filetrans as an example; change the model name as needed. Model list: https://www.alibabacloud.com/help/zh/model-studio/models
                        .fileUrls(
                                Arrays.asList(
                                        "{YOUR_AUDIO_URL}"))
                        .build();
        try {
            Transcription transcription = new Transcription();
            // Submit the transcription request
            TranscriptionResult result = transcription.asyncCall(param);
            System.out.println("RequestId: " + result.getRequestId());
            // Block and wait for the task to complete, then get the result
            result = transcription.wait(
                    TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
            // Print the result
            System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(result.getOutput()));
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
        System.exit(0);
    }
}

Enviar uma tarefa de forma assíncrona e consultar o resultado da tarefa de forma assíncrona

image
  1. Configure o Request parameters.

  2. Instancie um Core class (Transcription).

  3. Chame o método asyncCall do Core class (Transcription) para enviar a tarefa de forma assíncrona.

    Observação

    • O service de transcrição de arquivos processa tarefas enviadas por meio da API com base no melhor esforço. Após o envio, a tarefa entra no estado de fila (PENDING). O tempo de espera depende do tamanho da fila e da duração do arquivo, portanto não pode ser definido com precisão, mas geralmente fica dentro de alguns minutos. Assim que o processamento começa, o reconhecimento de fala é concluído a uma velocidade centenas de vezes superior ao tempo real.
    • Após a conclusão de cada tarefa, o resultado do reconhecimento e a URL de download permanecem válidos por 24 horas. Depois que expiram, não é mais possível consultar a tarefa ou baixar o resultado pela URL retornada em uma consulta anterior.
  4. Chame o método fetch do Core class (Transcription) em um loop até obter o resultado final da tarefa.

    Quando o status da tarefa for SUCCEEDED ou FAILED, interrompa a sondagem e processe o resultado.

    O método fetch retorna um Task result (TranscriptionResult).

Clique para visualizar o exemplo completo

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

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // The following is the configuration for the Singapore region. When calling, replace "{WorkspaceId}" with your actual workspace ID. Configurations differ across regions.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
        // Create the transcription request parameters
        TranscriptionParam param =
                TranscriptionParam.builder()
                        // The API Key differs between the Singapore and Beijing regions. Get an API Key: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
                        // If you have not configured the environment variable, replace the following line with your Model Studio API Key: .apiKey("sk-xxx")
                        //.apiKey("apikey")
                        .model("qwen-audio-3.0-asr-flash-filetrans") // This uses qwen-audio-3.0-asr-flash-filetrans as an example; change the model name as needed. Model list: https://www.alibabacloud.com/help/zh/model-studio/models
                        .fileUrls(
                                Arrays.asList(
                                        "{YOUR_AUDIO_URL}"))
                        .build();
        try {
            Transcription transcription = new Transcription();
            // Submit the transcription request
            TranscriptionResult result = transcription.asyncCall(param);
            System.out.println("RequestId: " + result.getRequestId());
            // Poll for the task result in a loop until the task finishes
            while (true) {
                result = transcription.fetch(TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
                if (result.getTaskStatus() == TaskStatus.SUCCEEDED || result.getTaskStatus() == TaskStatus.FAILED) {
                    break;
                }
                Thread.sleep(1000);
            }
            // Print the result
            System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(result.getOutput()));
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
        System.exit(0);
    }
}

Endpoints

Por padrão, o SDK usa o endpoint da região China (Beijing). Para mudar para outra região, modifique Constants.baseHttpApiUrl antes da inicialização.

Singapore

https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1

Ao fazer uma chamada, substitua {WorkspaceId} pelo seu Workspace ID real.

China (Beijing)

https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1

Ao fazer uma chamada, substitua {WorkspaceId} pelo seu Workspace ID real.

ImportanteO Alibaba Cloud Model Studio lançou domínios específicos para workspaces nas regiões China (Beijing) e Singapore. Os novos domínios dedicados oferecem desempenho superior e maior estabilidade para solicitações de inferência. Recomendamos migrar para os novos domínios:

  • China (Beijing): de dashscope.aliyuncs.com para {WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapore: de dashscope-intl.aliyuncs.com para {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com

Substitua {WorkspaceId} pelo seu Workspace ID real. Os domínios existentes permanecem totalmente funcionais.

Mudar para a região Singapore:

import com.alibaba.dashscope.utils.Constants;

// Set this at the beginning of your code
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";

Nota:

  • As API keys diferem entre regiões. Certifique-se de usar a API key correspondente à região de destino.
  • A configuração de região é global e afeta as chamadas de API de todos os SDKs DashScope.

Parâmetros de solicitação

Configure os parâmetros de solicitação usando os métodos encadeados de TranscriptionParam.

Clique para visualizar o exemplo

TranscriptionParam param = TranscriptionParam.builder()
  .model("qwen-audio-3.0-asr-flash-filetrans")
  .fileUrls(
          Arrays.asList(
                  "{YOUR_AUDIO_URL}"))
  .build();
ParâmetroTipoObrigatórioDescrição

model

String

Sim

Nome do modelo. Os valores suportados incluem as famílias de modelos Qwen-Audio-3.0-ASR-Flash-Filetrans e Fun-ASR. Para detalhes, consulte Supported models and regions.

fileUrls

List<String>

Sim

Lista de URLs dos arquivos de áudio ou vídeo a serem transcritos. HTTP e HTTPS são suportados. Uma única solicitação suporta apenas uma URL. Para requisitos de entrada, como formatos de áudio suportados, limites de tamanho de arquivo e limites de duração, consulte Audio specifications.

Se a gravação estiver armazenada no Alibaba Cloud OSS, a API RESTful suporta URLs temporárias com o prefixo oss://, enquanto o SDK não suporta URLs temporárias com prefixo oss://.

Importante

  • Uma URL temporária é válida por 48 horas e não pode ser usada após a expiração. Não utilize em produção.

  • A interface de credencial de upload tem limite de taxa de 100 QPS e não pode ser escalonada. Não utilize em ambientes de produção, alta concorrência ou testes de carga.

  • Para produção, use armazenamento estável, como Alibaba Cloud OSS, para manter os arquivos disponíveis a longo prazo e evitar limitações de taxa.

  • Se uma URL de arquivo de áudio definida como uma URL pública temporária do OSS estiver inacessível, defina X-DashScope-OssResourceResolve como enable no cabeçalho da solicitação (não recomendado).

    O SDK não suporta a configuração de cabeçalhos de solicitação.

vocabularyId

String

Não

ID de uma lista de palavras-chave pré-compilada.

Gere esse ID antecipadamente chamando a API de criação de lista de palavras-chave. Passe o ID durante o reconhecimento para usar as palavras-chave da lista.

Indicado para cenários onde o vocabulário é conhecido e relativamente estável, e onde você precisa reutilizar a mesma lista de palavras entre solicitações.

Para detalhes de uso, consulte Precompiled hotwords.

vocabulary

Map<String, Integer>

Não

Palavras-chave instantâneas.

Passadas como pares chave-valor, onde a chave é o texto da palavra-chave (string) e o valor é o peso da palavra-chave (integer). Não é necessário criar uma lista de palavras-chave antecipadamente. O peso varia de [1, 5] ou é definido como 50: um valor em [1, 5] torna o modelo mais propenso a gerar a palavra conforme o valor aumenta; um valor de 50 designa uma super palavra-chave, que melhora muito a recuperação, mas o número de super palavras-chave não pode exceder 50.

Adequado para otimização temporária de palavras-chave no nível de sessão.

Quando configuradas juntamente com palavras-chave pré-compiladas, apenas as palavras-chave instantâneas entram em vigor. Para detalhes de uso, consulte Instant hotwords.

ImportanteApenas qwen-audio-3.0-asr-flash-filetrans suporta palavras-chave inline.

ObservaçãoDefina vocabulary através do método parameter ou do método parameters da instância TranscriptionParam:

Map<String, Integer> vocab = new HashMap<>();
    vocab.put("John Smith", 5);
    vocab.put("Jane Doe", 5);

    TranscriptionParam param = TranscriptionParam.builder()
      .model("qwen-audio-3.0-asr-flash-filetrans")
      .parameter("vocabulary", vocab)
      .build();
Map<String, Integer> vocab = new HashMap<>();
    vocab.put("John Smith", 5);
    vocab.put("Jane Doe", 5);

    TranscriptionParam param = TranscriptionParam.builder()
      .model("qwen-audio-3.0-asr-flash-filetrans")
      .parameters(Collections.singletonMap("vocabulary", vocab))
      .build();

channelId

List<Integer>

Não

Índice das faixas de áudio a serem reconhecidas em um arquivo de áudio multifaixa. O índice começa em 0. Por exemplo, [0] reconhece a primeira faixa, e [0, 1] reconhece a primeira e a segunda faixas simultaneamente. Se você omitir este parâmetro, apenas a primeira faixa será processada.

ImportanteCada faixa especificada é faturada independentemente. Por exemplo, solicitar [0, 1] para um único arquivo incorre em duas cobranças separadas.

Valor padrão: [0].

specialWordFilter

String

Não

Palavras sensíveis a serem processadas durante o reconhecimento de fala. Você pode definir um método de tratamento diferente para cada palavra sensível. Para detalhes, consulte Sensitive word filtering.

diarizationEnabled

Boolean

Não

Se deve ativar a diarização de falantes. Desativado por padrão.

Aplica-se apenas a áudio mono. Áudio multicanal não suporta diarização de falantes.

Quando ativado, o resultado do reconhecimento inclui um campo speaker_id que distingue diferentes falantes.

ObservaçãoQuando a diarização de falantes estiver ativada, mantenha a duração do áudio dentro de 2 horas. Caso contrário, o reconhecimento pode falhar ou atingir o tempo limite.

Valor padrão: false.

Para um exemplo de speaker_id, consulte Recognition result description.

speakerCount

Integer

Não

ImportanteEntra em vigor apenas quando a diarização de falantes está ativada (diarization_enabled definido como true).

Valor de referência para o número de falantes. O intervalo válido é um número inteiro de 2 a 100 (inclusive).

Por padrão, o número de falantes é detectado automaticamente. Se você definir este valor, ele apenas orientará o algoritmo a gerar a contagem especificada quando possível, sem garantir essa contagem exata.

Sem valor padrão.

language_hints

String[]

Não

Códigos de idioma a serem reconhecidos. Se não for possível determinar o idioma antecipadamente, deixe sem definir e o modelo detectará o idioma automaticamente.

Para modelos Qwen-Audio-3.0-ASR-Flash-Filetrans, você pode definir até 4 valores; quaisquer valores além dos primeiros 4 são ignorados. Para modelos Fun-ASR, você pode definir apenas 1 valor; se definir vários, apenas o primeiro terá efeito.

Clique para visualizar os códigos de idioma suportados

  • qwen-audio-3.0-asr-flash-filetrans, fun-asr, fun-asr-2025-11-07, fun-asr-mtl, fun-asr-mtl-2025-08-25:

    • zh: Chinês
    • en: Inglês
    • ja: Japonês
    • ko: Coreano
    • vi: Vietnamita
    • th: Tailandês
    • id: Indonésio
    • ms: Malaio
    • tl: Filipino
    • hi: Hindi
    • ar: Árabe
    • fr: Francês
    • de: Alemão
    • es: Espanhol
    • pt: Português
    • ru: Russo
    • it: Italiano
    • nl: Holandês
    • sv: Sueco
    • da: Dinamarquês
    • fi: Finlandês
    • no: Norueguês
    • el: Grego
    • pl: Polonês
    • cs: Tcheco
    • hu: Húngaro
    • ro: Romeno
    • bg: Búlgaro
    • hr: Croata
    • sk: Eslovaco
  • fun-asr-2025-08-25:

    • zh: Chinês
    • en: Inglês

ObservaçãoDefina language_hints através do método parameter ou do método parameters da instância TranscriptionParam:

TranscriptionParam param = TranscriptionParam.builder()
      .model("qwen-audio-3.0-asr-flash-filetrans")
      .parameter("language_hints", new String[]{"zh"})
      .build();
TranscriptionParam param = TranscriptionParam.builder()
      .model("qwen-audio-3.0-asr-flash-filetrans")
      .parameters(Collections.singletonMap("language_hints", new String[]{"zh"}))
      .build();

apiKey

String

Não

Sua API key. Se você configurou a API key como uma variável de ambiente, não precisa defini-la no seu código. Caso contrário, você deve defini-la no seu código.

Resposta

Resultado da tarefa (TranscriptionResult)

O TranscriptionResult encapsula o resultado da tarefa atual.

Interface/MétodoParâmetroValor de retornoDescrição
public String getRequestId()

Nenhum

requestId

Obtém o requestId.

public String getTaskId()

Nenhum

taskId

Obtém o taskId.

public TaskStatus getTaskStatus()

Nenhum

TaskStatus, o status da tarefa

Obtém o status da tarefa.

TaskStatus é uma enumeração. Você só precisa se concentrar nos quatro estados seguintes: PENDING, RUNNING, SUCCEEDED e FAILED.

ObservaçãoQuando uma tarefa contém várias subtarefas, o status geral da tarefa é marcado como SUCCEEDED desde que qualquer subtarefa tenha sucesso. Use o campo subtask_status para verificar o resultado de cada subtarefa individualmente.

public List<TranscriptionTaskResult> getResults()

Nenhum

Subtask result (TranscriptionTaskResult)

Obtém o Subtask result (TranscriptionTaskResult).

Cada tarefa reconhece um ou mais arquivos de áudio. Arquivos de áudio diferentes são processados em subtarefas separadas, portanto cada tarefa corresponde a uma ou mais subtarefas.

public JsonObject getOutput()

Nenhum

O resultado da tarefa, em formato JSON

Obtém o resultado da tarefa.

O resultado consiste em dados no formato JSON. Se quiser obter o resultado da tarefa através da interface getOutput, faça a análise por conta própria após obter o resultado.

Clique para visualizar o exemplo JSON

Exemplo de sucesso
{
        "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":"{YOUR_AUDIO_URL}",
                "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=YOUR_ACCESS_KEY_ID&Signature=YOUR_SIGNATURE",
                "subtask_status":"SUCCEEDED"
            }
        ],
        "task_metrics":{
            "TOTAL":1,
            "SUCCEEDED":1,
            "FAILED":0
        }
    }
Exemplo de erro

code” é o código de erro e “message” é a mensagem de erro. Esses dois campos aparecem apenas quando ocorre um erro. Você pode usá-los, juntamente com o Error codes, para solucionar o problema.

{
              "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": "{YOUR_AUDIO_URL}",
                      "code": "InvalidFile.DownloadFailed",
                      "message": "The audio file cannot be downloaded.",
                      "subtask_status": "FAILED"
                  }
              ],
              "task_metrics": {
                  "TOTAL": 1,
                  "SUCCEEDED": 0,
                  "FAILED": 1
              }
          }

Resultado da subtarefa (TranscriptionTaskResult)

O TranscriptionTaskResult encapsula o resultado de uma subtarefa. Uma subtarefa reconhece um único arquivo de áudio.

Interface/MétodoParâmetroValor de retornoDescrição
public String getFileUrl()

Nenhum

URL do arquivo de áudio reconhecido

Obtém a URL do arquivo de áudio reconhecido.

public String getTranscriptionUrl()

Nenhum

URL do resultado do reconhecimento

Obtém a URL do resultado do reconhecimento. Esta URL é válida por 24 horas. Após a expiração, não é mais possível consultar a tarefa ou baixar o resultado pela URL retornada em uma consulta anterior.

O resultado do reconhecimento é salvo como um arquivo JSON. Baixe o arquivo através da URL ou leia seu conteúdo diretamente através de uma solicitação HTTP.

Para o significado de cada campo nos dados JSON, consulte Recognition result description.

public TaskStatus getSubTaskStatus()

Nenhum

TaskStatus, o status da subtarefa

Obtém o status da subtarefa.

TaskStatus é uma enumeração. Você só precisa se concentrar nos quatro estados seguintes: PENDING, RUNNING, SUCCEEDED e FAILED.

public String getMessage()

Nenhum

Informações importantes geradas durante a execução da tarefa, que podem estar vazias

Obtém as informações importantes geradas durante a execução da tarefa.

Quando uma tarefa falha, verifique este conteúdo para analisar a causa.

Descrição do resultado do reconhecimento

O resultado do reconhecimento é salvo como um arquivo JSON.

Clique para visualizar o exemplo de resultado do reconhecimento

{
    "file_url":"{YOUR_AUDIO_URL}",
    "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, this is Alibaba Speech Lab.",
            "sentences":[
                {
                    "begin_time":100,
                    "end_time":3820,
                    "text":"Hello world, this is Alibaba Speech Lab.",
                    "sentence_id":1,
                    "speaker_id":0, //This field is displayed only when automatic speaker diarization is enabled
                    "words":[
                        {
                            "begin_time":100,
                            "end_time":596,
                            "text":"Hello ",
                            "punctuation":""
                        },
                        {
                            "begin_time":596,
                            "end_time":844,
                            "text":"world",
                            "punctuation":", "
                        }
                        // Other content is omitted here
                    ]
                }
            ]
        }
    ]
}

Os seguintes parâmetros merecem atenção:

Parâmetro

Tipo

Descrição

audio_format

string

Formato de áudio do arquivo de origem.

channels

array[integer]

Índice da faixa de áudio no arquivo de origem. Para áudio de faixa única, [0] é retornado; para áudio de duas faixas, [0, 1] é retornado; e assim por diante.

original_sampling_rate

integer

Taxa de amostragem (Hz) do áudio no arquivo de origem.

original_duration_in_milliseconds

integer

Duração original do áudio (ms) no arquivo de origem.

channel_id

integer

Índice da faixa do resultado da transcrição, começando em 0.

content_duration

integer

Duração (ms) do conteúdo na faixa identificado como fala.

O service de modelo de reconhecimento de fala transcreve apenas o conteúdo de uma faixa identificado como fala, medindo e faturando com base nessa duração. Conteúdo que não seja fala não é medido nem faturado. Normalmente, a duração do conteúdo de fala é menor que a duração original do áudio. Como a existência de conteúdo de fala é determinada por um modelo de IA, o resultado pode diferir ligeiramente da situação real.

transcript

string

Resultado da transcrição no nível de parágrafo.

sentences

array

Resultado da transcrição no nível de sentença.

words

array

Resultado da transcrição no nível de palavra.

begin_time

integer

Carimbo de data/hora inicial (ms).

end_time

integer

Carimbo de data/hora final (ms).

text

string

Resultado da transcrição.

speaker_id

integer

Índice do falante atual, começando em 0, usado para distinguir entre diferentes falantes.

Este campo aparece no resultado do reconhecimento apenas quando a diarização de falantes está ativada.

punctuation

string

Pontuação prevista após a palavra, se houver.

Interfaces principais

Classe de parâmetros de consulta de tarefa (TranscriptionQueryParam)

O TranscriptionQueryParam é usado ao aguardar a conclusão de uma tarefa (chamando o método wait de Transcription) ou ao consultar o resultado da tarefa (chamando o método fetch de Transcription).

Crie uma instância de TranscriptionQueryParam através do método estático FromTranscriptionParam.

Mostrar exemplo

// Build the transcription request parameters
TranscriptionParam param =
        TranscriptionParam.builder()
                // If you have not set the API key as an environment variable, replace apiKey with your own API key
                //.apiKey("apikey")
                .model("qwen-audio-3.0-asr-flash-filetrans")
                .fileUrls(
                        Arrays.asList(
                                "{YOUR_AUDIO_URL}"))
                .build();
try {
    Transcription transcription = new Transcription();
    // Submit the transcription request
    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);
}
Interface/métodoParâmetrosValor de retornoDescrição
public static TranscriptionQueryParam FromTranscriptionParam(TranscriptionParam param, String taskId)
  • param: uma instância de TranscriptionParam
  • taskId: o ID da tarefa

uma instância de TranscriptionQueryParam

Cria uma instância de TranscriptionQueryParam.

Classe principal (Transcription)

Importe Transcription com "import com.alibaba.dashscope.audio.asr.transcription.*;". Suas interfaces principais são as seguintes:

Interface/métodoParâmetrosValor de retornoDescrição
public TranscriptionResult asyncCall(TranscriptionParam param)

param: os parâmetros de reconhecimento de fala, uma instância de TranscriptionParam

Task result (TranscriptionResult)

Envia uma tarefa de reconhecimento de fala de forma assíncrona.

public TranscriptionResult wait(TranscriptionQueryParam queryParam)

queryParam: uma instância de TranscriptionQueryParam

Task result (TranscriptionResult)

Bloqueia a thread atual até que a tarefa assíncrona termine (o status da tarefa é SUCCEEDED ou FAILED).

public TranscriptionResult fetch(TranscriptionQueryParam queryParam)

queryParam: uma instância de TranscriptionQueryParam

Task result (TranscriptionResult)

Consulta o resultado da tarefa atual de forma assíncrona.

Códigos de erro

Se encontrar um erro, consulte Error codes para solução de problemas.

Quando uma tarefa contém várias subtarefas, o status geral da tarefa é marcado como SUCCEEDED desde que pelo menos uma subtarefa tenha sucesso. Verifique o campo subtask_status para determinar o resultado de cada subtarefa.

Exemplo de resposta de erro:

{
    "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": "{YOUR_AUDIO_URL}",
            "code": "InvalidFile.DownloadFailed",
            "message": "The audio file cannot be downloaded.",
            "subtask_status": "FAILED"
        }
    ],
    "task_metrics": {
        "TOTAL": 1,
        "SUCCEEDED": 0,
        "FAILED": 1
    }
}

FAQ

Recursos

P: Áudio codificado em Base64 é suportado?

Áudio codificado em Base64 não é suportado. Apenas áudio em uma URL acessível publicamente pode ser reconhecido. Fluxos binários e arquivos locais não podem ser reconhecidos diretamente.

P: Como torno um arquivo de áudio disponível em uma URL acessível publicamente?

As etapas típicas são as seguintes. Esta é uma abordagem; o processo exato varia conforme o product de armazenamento. Recomendamos que você upload the audio to Alibaba Cloud OSS:

1. Escolha um método de armazenamento e hospedagem

Por exemplo:

  • Object Storage Service (recomendado):

    • Use o Object Storage Service de um provedor cloud (como Alibaba Cloud OSS) para carregar o arquivo de áudio em um bucket e configurá-lo para acesso público.
    • Vantagens: alta disponibilidade, suporte a aceleração CDN e gerenciamento fácil.
  • Servidor web:

    • Coloque o arquivo de áudio em um servidor web que suporte acesso HTTP/HTTPS (como Nginx ou Apache).
    • Vantagens: adequado para pequenos projetos ou testes locais.
  • Rede de distribuição de conteúdo (CDN):

    • Hospede o arquivo de áudio em uma CDN e acesse-o através da URL fornecida pela CDN.
    • Vantagens: acelera a entrega de arquivos e é adequado para cenários de alta concorrência.

2. Carregue o arquivo de áudio

Carregue o áudio de acordo com o método de armazenamento ou hospedagem escolhido. Por exemplo:

  • Object Storage Service:

    • Faça login no console do provedor cloud e crie um bucket.
    • Carregue o arquivo de áudio e defina sua permissão como leitura pública ou gere um link de acesso temporário.
  • Servidor web:

    • Coloque o arquivo de áudio em um diretório designado no servidor (como /var/www/html/audio/).
    • Certifique-se de que o arquivo esteja acessível via HTTP/HTTPS.

3. Gere uma URL acessível publicamente

Por exemplo:

  • Object Storage Service:

    • Após o carregamento do arquivo, o sistema gera automaticamente uma URL de acesso público (geralmente no formato https://<bucket-name>.<region>.aliyuncs.com/<file-name>).
    • Para um nome de domínio mais amigável, vincule um domínio personalizado e ative HTTPS.
  • Servidor web:

    • A URL de acesso geralmente é o endereço do servidor mais o caminho do arquivo (como https://your-domain.com/audio/file.mp3).
  • CDN:

    • Após configurar a aceleração CDN, use a URL fornecida pela CDN (como https://cdn.your-domain.com/audio/file.mp3).

4. Verifique se a URL funciona

Certifique-se de que a URL gerada seja acessível pela rede pública. Por exemplo:

  • Abra a URL em um navegador e verifique se o arquivo de áudio é reproduzido.
  • Use uma ferramenta (como curl ou Postman) para verificar se a URL retorna a resposta HTTP correta (código de status 200).

Ao usar o SDK, se os arquivos de áudio estiverem armazenados no Alibaba Cloud OSS, URLs temporárias com o prefixo oss:// não são suportadas.

Ao usar a API RESTful, se os arquivos de áudio estiverem armazenados no Alibaba Cloud OSS, URLs temporárias com o prefixo oss:// são suportadas:

  • A URL temporária é válida por 48 horas e não pode ser usada após a expiração. Não utilize em ambiente de produção.
  • A API para obtenção de credencial de upload tem limite de 100 QPS e não suporta scale out. Não utilize em ambientes de produção, cenários de alta concorrência ou cenários de teste de estresse.
  • Para ambientes de produção, use um service de armazenamento estável, como OSS, para garantir a disponibilidade de arquivos a longo prazo e evitar problemas de limitação de taxa.

P: Quanto tempo leva para obter o resultado do reconhecimento?

Após o envio de uma tarefa, ela entra no estado de fila (PENDING). O tempo de espera depende do tamanho da fila e da duração do áudio, portanto não pode ser afirmado com exatidão, mas geralmente fica dentro de alguns minutos. Em geral, quanto mais longo o áudio, mais tempo leva.

Solução de problemas

Se o seu código retornar um erro, solucione-o com base nas informações em Error codes.

P: A sondagem nunca retorna um resultado?

Isso pode ser causado por limitação de taxa. Aguarde um momento e tente novamente.

P: Por que a fala não pode ser reconhecida (sem resultado de reconhecimento)?

Verifique se o formato de áudio e a taxa de amostragem estão corretos e atendem às restrições de parâmetros.

Use a ferramenta ffprobe para obter o container de áudio, codec, taxa de amostragem, canais e outros detalhes:

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