QwenCloudBRASIL
Tradução de apoio para consulta. Código e identificadores técnicos preservados. Consultar referência original ↗

Qwen-Audio-3.x-ASR-Flash-Filetrans/Fun-ASR gravando Java SDK

Transcrição de arquivos Java SDK para Qwen-Audio-3.x-ASR-Flash-Filetrans/Fun-ASR

Para obter detalhes do modelo, consulte Reconhecimento de arquivo de áudio - Fun-ASR/Paraformer.

Pré-requisitos

Disponibilidade do modelo

Modelo Versão Preço unitário Cota gratuita (Nota)
fun-asr Estável $0.000035 (≈ R$ 0,000176*)/segundo 36.000 segundos (10 horas)
Válido por 90 dias

Limitações

Formato de entrada: somente URLs de arquivos acessíveis publicamente (HTTP/HTTPS) são aceitos. Arquivos locais e áudio codificado em Base64 não são suportados.

Exemplo: https://your-domain.com/file.mp3

Defina URLs de arquivo com o fileUrls parâmetro. Cada solicitação aceita até 100 URLs.

Parâmetros de solicitação

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

Clique para ver o exemplo.

TranscriptionParam param = TranscriptionParam.builder()
  .model("qwen-audio-3.1-asr-flash-filetrans")
  .fileUrls(
          Arrays.asList(
                  "{YOUR_AUDIO_URL}"))
  .build();
Parâmetro Tipo Obrigatório Descrição
modelo Corda Sim O nome do modelo. Os valores suportados incluem o Qwen-Audio-3.x-ASR-Flash-Filetrans e Fun-ASR famílias modelo. Para obter detalhes, consulte Modelos e regiões compatíveis.
URLs de arquivo Lista\
     | Sim | Uma lista de URLs dos arquivos de áudio ou vídeo a serem transcritos. HTTP e HTTPS são suportados. Uma única solicitação oferece suporte a apenas um URL. Para requisitos de entrada, como formatos de áudio suportados, limites de tamanho de arquivo e limites de duração, consulte [Especificações de áudio](/developer-guides/speech/asr). Se a gravação for armazenada no Alibaba Cloud OSS, a API RESTful suporta URLs temporários prefixados com `oss://`, enquanto o SDK não oferece suporte `oss://`URLs temporários com prefixo. 

Um URL temporário é válido por 48 horas e não pode ser usado após expirar. Não use em produção. A interface de upload de credenciais tem taxa limitada a 100 QPS e não pode ser ampliada. Não use-o em cenários de produção, alta simultaneidade ou testes de carga. Para produção, use armazenamento estável, como o Alibaba Cloud OSS, para manter os arquivos disponíveis a longo prazo e evitar limitação de taxa.

Se um URL de arquivo de áudio definido como um URL público temporário de OSS estiver inacessível, defina X-DashScope-OssResourceResolve para enable no cabeçalho da solicitação (não recomendado). O SDK não oferece suporte à configuração de cabeçalhos de solicitação. | | manter_dialeto | booleano | Não | Apoiado por qwen-audio-3.1-asr-flash-filetrans apenas. O padrão é false, que transcreve dialetos para o chinês padrão. Definir como true para preservar expressões dialetais. Definir com .parameter("keep_dialect", value). Consulte referência da API para obter detalhes. | | vocabulárioId | Corda | Não | O ID de uma lista de hot word pré-compilada. Gere esse ID antecipadamente chamando a API de criação de lista de palavras quentes. Passe o ID durante o reconhecimento para usar as palavras quentes da lista. Adequado para cenários onde o vocabulário é conhecido e relativamente estável, e onde é necessário reutilizar a mesma lista de palavras em solicitações. Para obter detalhes de uso, consulte Hotwords pré-compiladas. | | vocabulário | Mapa
| Não | Palavras quentes instantâneas. Passados como pares de valores-chave, onde a chave é o texto da palavra quente (string) e o valor é o peso da palavra quente (integer). Nenhuma lista de palavras quentes precisa ser criada com antecedência. O peso varia de [1, 5] ou é definido como 50: um valor em [1, 5] aumenta a probabilidade de o modelo gerar a palavra à medida que o valor aumenta; um valor de 50 designa uma palavra superquente, o que melhora muito a recuperação, mas o número de palavras superquentes não pode exceder 50. Adequado para otimização de palavra quente temporária em nível de sessão. Quando hotwords instantâneas e pré-compiladas são configuradas juntas, o sistema mescla os dois conjuntos. Se o conjunto mesclado contiver mais de 2.000 hotwords, o sistema selecionará aleatoriamente 2.000 para usar. Para obter detalhes de uso, consulte Hotwords instantâneas. Somente qwen-audio-3.1-asr-flash-filetrans e qwen-audio-3.0-asr-flash-filetrans suporte a hotwords in-line. Consulte Definir vocabulário para exemplos de código. | | ID do canal | Lista
| Não | O índice das trilhas de áudio a serem reconhecidas em um arquivo de áudio multitrilha. O índice começa em 0. Por exemplo, [0] reconhece a primeira faixa e [0, 1] reconhece a primeira e a segunda faixas ao mesmo tempo. Se você omitir este parâmetro, somente a primeira faixa será processada. Cada faixa especificada é cobrada de forma independente. Por exemplo, solicitar [0, 1] para um único arquivo incorre em duas cobranças separadas. Valor padrão: [0]. | | especialWordFilter | Corda | Não | As 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 obter detalhes, consulte Filtragem de palavras sensíveis. | | diarizaçãoHabilitado | Booleano | Não | Se deve ativar a diarização do orador. Desativado por padrão. Aplica-se apenas ao áudio mono. O áudio multicanal não suporta diarização de alto-falante. Quando ativado, o resultado do reconhecimento inclui um speaker_id campo que distingue diferentes falantes. Quando a diarização do alto-falante estiver ativada, mantenha a duração do áudio em 2 horas. Caso contrário, o reconhecimento poderá falhar ou expirar. Valor padrão: falso. Para um exemplo de speaker_id, consulte Resultado do reconhecimento. | | contagem de alto-falantes | Inteiro | Não | Entra em vigor somente quando a diarização do alto-falante está habilitada (diarization_enabled está definido para true). Um valor de referência para o número de alto-falantes. O intervalo válido é um número inteiro de 2 a 100 (inclusive). Por padrão, o número de alto-falantes é detectado automaticamente. Se você definir esse valor, ele apenas orientará o algoritmo para gerar a contagem especificada quando possível e não garantirá essa contagem exata. Nenhum valor padrão. | | idioma_dicas | Cadeia[] | Não | Os códigos de idioma a serem reconhecidos. Se você não conseguir determinar o idioma antecipadamente, deixe-o sem definição e o modelo detectará o idioma automaticamente. Para Qwen-Audio-3.x-ASR-Flash-Filetrans modelos, você pode configurar até 4 valores; quaisquer valores além dos 4 primeiros são ignorados. Para Fun-ASR modelos, você pode definir apenas 1 valor; se você definir vários, apenas o primeiro terá efeito. Consulte Idiomas suportados. | | APIKey | Corda | Não | Sua chave de API. Se você configurou a chave de API como uma variável de ambiente, não será necessário defini-la em seu código. Caso contrário, você deverá configurá-lo em seu código. |

Configurando vocabulário

Definir vocabulary através do parameter método ou o parameters método do TranscriptionParam exemplo:

Set through parameter

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

Defina os parâmetros.

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

Detalhes do filtro de palavras confidenciais

Se specialWordFilter não estiver definido, a filtragem integrada será aplicada (correspondências do QwenCloud lista de palavras sensíveis são substituídos por *).

Quando definido, você pode usar estas políticas:

O valor deve ser uma string JSON:

{
  "filter_with_signed": {
    "word_list": ["test"]
  },
  "filter_with_empty": {
    "word_list": ["start", "happen"]
  },
  "system_reserved_filter": true
}

Descrições dos campos:

Idiomas suportados

Códigos de idiomas suportados por modelo:

Set through parameter

  ```java
  TranscriptionParam param = TranscriptionParam.builder()
    .model("qwen-audio-3.1-asr-flash-filetrans")
    .parameter("language_hints", new String[]{"zh"})
    .build();
  ```

Defina os parâmetros.

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

Resposta

Resultado da tarefa (TranscriptionResult)

TranscriptionResult encapsula o resultado da tarefa atual.

Método Parâmetro Valor de retorno Descrição
public String getRequestId() Nenhum ID da solicitação Obtém o requestId.
public String getTaskId() Nenhum ID da tarefa Obtém o taskId.
public TaskStatus getTaskStatus() Nenhum TaskStatus, o status da tarefa Obtém o status da tarefa. TaskStatus é um enum. Você só precisa se concentrar nos quatro estados a seguir: PENDING, RUNNING, SUCCEEDEDe FAILED.
Quando uma tarefa contém várias subtarefas, o status geral da tarefa é marcado como SUCCEEDED contanto que qualquer subtarefa seja bem-sucedida. Use o subtask_status campo para verificar o resultado de cada subtarefa individual.
public List<TranscriptionTaskResult> getResults() Nenhum Resultado da subtarefa (TranscriptionTaskResult) Obtém o resultado da subtarefa (TranscriptionTaskResult). Cada tarefa reconhece um ou mais arquivos de áudio. Diferentes arquivos de áudio são processados ​​em subtarefas separadas, de modo que cada tarefa corresponde a uma ou mais subtarefas.
public JsonObject getOutput() Nenhum O resultado da tarefa, no formato JSON Obtém o resultado da tarefa. O resultado são dados no formato JSON. Se você want para obter o resultado da tarefa através do getOutput interface, analise você mesmo depois de obter o resultado. Consulte exemplos de saída JSON.

Exemplos de saída 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/34604a7b-579a-4223-8797-5116a49b07ec-1.json?Expires=1739520730&OSSAccessKeyId=yourOSSAccessKeyId&Signature=tMqyH56oB5rDW9%2FFqD8Yo%2F3WaPk%3D",
      "subtask_status":"SUCCEEDED"
    },
    {
      "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=yourOSSAccessKeyId&Signature=BF7vPxlsJN9hkJlY%2BLReezxOwK8%3D",
      "subtask_status":"SUCCEEDED"
    }
  ],
  "task_metrics":{
    "TOTAL":2,
    "SUCCEEDED":2,
    "FAILED":0
  }
}

Exemplo de erro

code e message os campos aparecem somente quando ocorre um erro. Você pode usá-los, juntamente com os códigos de erro, 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": "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": "{YOUR_AUDIO_URL}",
      "code": "InvalidFile.DownloadFailed",
      "message": "The audio file cannot be downloaded.",
      "subtask_status": "FAILED"
    }
  ],
  "task_metrics": {
    "TOTAL": 2,
    "SUCCEEDED": 1,
    "FAILED": 1
  }
}

Resultado da subtarefa (TranscriptionTaskResult)

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

Método Parâmetro Valor de retorno Descrição
public String getFileUrl() Nenhum A URL do arquivo de áudio reconhecido Obtém a URL do arquivo de áudio reconhecido.
public String getTranscriptionUrl() Nenhum A URL do resultado do reconhecimento Obtém a URL do resultado do reconhecimento. Este URL é válido por 24 horas. Após expirar, você não poderá mais consultar a tarefa ou baixar o resultado por meio da URL retornada em uma consulta anterior. O resultado do reconhecimento é salvo como um arquivo JSON. Você pode baixar o arquivo por meio da URL ou ler seu conteúdo diretamente por meio de uma solicitação HTTP. Consulte Resultado do reconhecimento.
public TaskStatus getSubTaskStatus() Nenhum TaskStatus, o status da subtarefa Obtém o status da subtarefa. TaskStatus é um enum. Você só precisa se concentrar nos quatro estados a seguir: PENDING, RUNNING, SUCCEEDEDe FAILED.
public String getMessage() Nenhum Informações-chave geradas durante a execução da tarefa, que podem estar vazias Obtém as principais informações geradas durante a execução da tarefa. Quando uma tarefa falha, verifique este conteúdo para analisar a causa.

Resultado de reconhecimento

O resultado do reconhecimento é um arquivo JSON.

Clique para ver o exemplo do 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,
          "words":[
            {
              "begin_time":100,
              "end_time":596,
              "text":"Hello ",
              "punctuation":""
            },
            {
              "begin_time":596,
              "end_time":844,
              "text":"world",
              "punctuation":", "
            }
          ]
        }
      ]
    }
  ]
}

Os seguintes parâmetros são dignos de nota:

Parâmetro Tipo Descrição
áudio_formato corda O formato de áudio do arquivo de origem.
canais matriz[inteiro] O índice da trilha do áudio no arquivo de origem. Para áudio de trilha única, [0] é retornado; para áudio de trilha dupla, [0, 1] é retornado; e assim por diante.
original_amostragem_taxa inteiro A taxa de amostragem (Hz) do áudio no arquivo de origem.
original_duração_em_milissegundos inteiro A duração do áudio original (ms) no arquivo de origem.
canal_id inteiro O índice da trilha do resultado da transcrição, começando em 0.
conteúdo_duração inteiro A duração (ms) do conteúdo da faixa identificado como fala.
O serviço do modelo de reconhecimento de fala transcreve apenas o conteúdo de uma faixa identificada como fala e mede e fatura com base nessa duração. O conteúdo não falado não é medido nem cobrado. Normalmente, a duração do conteúdo da fala é menor que a duração do áudio original. Como a existência do conteúdo da fala é determinada por um modelo de IA, o resultado pode diferir ligeiramente da situação real.
transcrição corda O resultado da transcrição em nível de parágrafo.
frases matriz O resultado da transcrição em nível de frase.
palavras matriz O resultado da transcrição em nível de palavra.
início_hora inteiro O carimbo de data/hora de início (ms).
fim_hora inteiro O carimbo de data/hora final (ms).
texto corda O resultado da transcrição.
alto-falante_id inteiro O índice do alto-falante atual, começando em 0, usado para distinguir entre diferentes alto-falantes. Este campo aparece no resultado do reconhecimento somente quando a diarização do locutor está habilitada.
pontuação corda A pontuação prevista após a palavra, se houver.

Interfaces principais

Classe de parâmetro de consulta (TranscriptionQueryParam)

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

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

Mostre o 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.1-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étodo Parâmetros Valor de retorno Descrição
public static TranscriptionQueryParam FromTranscriptionParam(TranscriptionParam param, String taskId) param: a TranscriptionParam exemplo, taskId: o ID da tarefa um TranscriptionQueryParam instância Cria um TranscriptionQueryParam instância.

Classe principal (Transcription)

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

Interface/método Parâmetros Valor de retorno Descrição
public TranscriptionResult asyncCall(TranscriptionParam param) param: os parâmetros de reconhecimento de fala, um TranscriptionParam instância Resultado da tarefa (TranscriptionResult) Envia uma tarefa de reconhecimento de fala de forma assíncrona.
public TranscriptionResult wait(TranscriptionQueryParam queryParam) queryParam: a TranscriptionQueryParam instância Resultado da tarefa (TranscriptionResult) Bloqueia o thread atual até que a tarefa assíncrona termine (o status da tarefa é SUCCEEDED ou FAILED).
public TranscriptionResult fetch(TranscriptionQueryParam queryParam) queryParam: a TranscriptionQueryParam instância Resultado da tarefa (TranscriptionResult) Consulta o resultado da tarefa atual de forma assíncrona.

* Valores em reais sujeitos a ajustes e a flutuações cambiais. Conversões estimadas, sem impostos, spread ou tarifas; confirme o valor final na plataforma oficial.