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
-
Obtenha uma chave de API e defini-lo como uma variável de ambiente.
Para acesso temporário ou operações de alto risco, use um token temporário em vez disso. Os tokens expiram após 60 segundos e reduzem o risco de vazamento.
Substitua a chave API no seu código pelo token.
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 |
- Idiomas suportados:
- fun-asr: Chinês (mandarim, cantonês, Wu, Minnan, Hakka, Gan, Xiang e Jin; também suporta sotaques de mandarim das regiões de Zhongyuan, Sudoeste, Jilu, Jianghuai, Lanyin, Jiaoliao, Nordeste, Pequim e Hong Kong-Taiwan - incluindo Henan, Shaanxi, Hubei, Sichuan, Chongqing, Yunnan, Guizhou, Guangdong, Guangxi, Hebei, Tianjin, Shandong, Anhui, Nanjing, Jiangsu, Hangzhou, Gansu e Ningxia), inglês, japonês, coreano, vietnamita, tailandês, indonésio, malaio, filipino, hindi, árabe, francês, alemão, espanhol, português, russo, italiano, holandês, sueco, dinamarquês, finlandês, norueguês, grego, polonês, tcheco, húngaro, romeno, búlgaro, croata e eslovaco.
- Taxas de amostragem suportadas: Qualquer
- Formatos de áudio suportados: aac, amr, avi, flac, flv, m4a, mkv, mov, mp3, mp4, mpeg, ogg, opus, wav, webm, wma, wmv
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.
-
Formatos de áudio:
aac,amr,avi,flac,flv,m4a,mkv,mov,mp3,mp4,mpeg,ogg,opus,wav,webm,wma,wmvExistem muitas variantes de formato de áudio e vídeo. A API não pode garantir o reconhecimento correto para todos eles. Teste seus arquivos para verificar os resultados.
-
Taxa de amostragem de áudio: Qualquer
-
Tamanho e duração do arquivo: Até 2 GB e 12 horas. Se a diarização do alto-falante estiver habilitada, mantenha a duração do áudio abaixo de 2 horas. Para arquivos maiores, consulte práticas recomendadas de pré-processamento.
-
Tamanho do lote: até 100 URLs de arquivo por solicitação.
-
Idiomas suportados: fun-asr suporta chinês e 29 outros idiomas. Consulte Idiomas suportados.
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:
- Substitua por
*: Substitui palavras correspondentes por asteriscos do mesmo comprimento. - Filtrar: Remove palavras correspondentes do resultado.
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:
filter_with_signed- Tipo: objeto (opcional)
- Substitui palavras correspondentes por
*do mesmo comprimento. - Exemplo: "Ajude-me a testar este trecho de código" -> "Ajude-me **** este trecho de código"
- Campo:
word_list(matriz de strings de palavras a serem substituídas)
filter_with_empty- Tipo: objeto (opcional)
- Remove palavras correspondentes dos resultados.
- Exemplo: “O jogo está prestes a começar?” -> "O jogo está prestes a acontecer?"
- Campo:
word_list(string array de palavras a serem removidas)
system_reserved_filter- Tipo: booleano (padrão: verdadeiro)
- Permite regras de palavras sensíveis predefinidas. Quando verdadeiro, a filtragem integrada se aplica (QwenCloud lista de palavras correspondências substituídas por
*).
Idiomas suportados
Códigos de idiomas suportados por modelo:
-
qwen-audio-3.1-asr-flash-filetrans, qwen-audio-3.0-asr-flash-filetrans, fun-asr:
- zh: chinês
- pt: Inglês
- ja: Japonês
- ko: Coreano
- vi: vietnamita -th: Tailandês
- id: indonésio
- senhora: Malaio
- tl: filipino
- oi: hindi
- ar: árabe
- fr: Francês
- de: alemão
- es: espanhol -pt: Português
- ru: russo
- isto: italiano
- nl: Holandês
- sv: sueco
- da: dinamarquês
- fi: Finlandês
- não: norueguês
- el: grego
- pl: Polonês
- cs: Tcheco
- hu: Húngaro
- ro: romeno
- bg: búlgaro
- hr: Croata -sk: Eslovaco
Definir
language_hintsatravés doparametermétodo ou oparametersmétodo doTranscriptionParamexemplo:
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. |