Qwen-Audio-3.0-ASR-Flash-Filetrans/Fun-ASR API HTTP para reconhecimento de fala em tempo não real
Transcrição de arquivo REST
Este tópico descreve os parâmetros e detalhes da interface da API HTTP para reconhecimento de fala em tempo não real com Qwen-Audio-3.0-ASR-Flash-Filetrans e Fun-ASR.
Guia do usuário: Reconhecimento de fala em tempo não real. Para requisitos de entrada, como formatos de áudio suportados, limites de tamanho de arquivo e limites de duração, consulte Especificações de áudio.
##Como funciona
Ao contrário das chamadas síncronas do DashScope, que retornam o resultado imediatamente em uma única solicitação, as chamadas assíncronas são projetadas para arquivos de áudio longos ou tarefas demoradas. Este modo usa um fluxo de envio e pesquisa em duas etapas que evita tempos limite de solicitação causados por longas esperas:
-
Etapa 1: Envie a tarefa.
- O cliente envia uma solicitação de processamento assíncrono.
- Após validar a solicitação, o servidor não executa a tarefa imediatamente. Em vez disso, ele retorna um único
task_idpara indicar que a tarefa foi criada com sucesso.
-
Etapa 2: Recupere o resultado.
- O cliente usa o retornado
task_idpara pesquisar a interface de consulta repetidamente. - Quando a tarefa termina, a interface de consulta retorna o resultado final do reconhecimento.
- O cliente usa o retornado
Pré-requisitos
Faça login em QwenCloud e criar uma chave de API. Para evitar riscos de segurança, exporte a chave de API como uma variável de ambiente em vez de codificá-lo.
Para conceder acesso temporário ou restringir operações confidenciais, use um token temporário.
Os tokens temporários expiram em 60 segundos, reduzindo o risco de vazamento. Substitua a chave API no seu código pelo token temporário.
Terminais de serviço
Interface de envio de tarefa: POST https://maas.qwencloudapi.com/api/v1/services/audio/asr/transcription
Interface de tarefa de consulta: GET https://maas.qwencloudapi.com/api/v1/tasks/{task_id}
Solicitar cabeçalhos
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| Autorização | corda | Sim | Token de autenticação no formato Bearer $DASHSCOPE_API_KEY. Substitua "<your_api_key>" pela sua chave de API real. Necessário para a interface de tarefa de envio e para a interface de tarefa de consulta. |
| Tipo de conteúdo | corda | Sim | O tipo de mídia do corpo da solicitação. Obrigatório apenas para a interface de envio de tarefa. Valor fixo: application/json. |
| X-DashScope-Async | corda | Sim | O sinalizador de tarefa assíncrona. Obrigatório apenas para a interface de envio de tarefa. Valor fixo: enable. Não o omita ou a tarefa não poderá ser enviada. |
Enviar interface de tarefa
Envia uma tarefa de reconhecimento de fala. Essa interface retorna de forma assíncrona, portanto, pesquise o status da tarefa com a Interface de tarefa de consulta.
Basic call
```bash
curl --location 'https://maas.qwencloudapi.com/api/v1/services/audio/asr/transcription' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--header "X-DashScope-Async: enable" \
--data '{
"model": "qwen-audio-3.0-asr-flash-filetrans",
"input": {
"file_urls": [
"{YOUR_AUDIO_URL}"
]
},
"parameters": {
"channel_id": [0]
}
}'
```
Inline hotwords
Use hotwords in-line no seguinte formato:
```json
{
"model": "qwen-audio-3.0-asr-flash-filetrans",
"input": {
"file_urls": [
"{YOUR_AUDIO_URL}"
]
},
"parameters": {
"vocabulary": {"John Smith": 5, "Jane Doe": 5}
}
}
```
Context
Use o contexto no seguinte formato:
```json
{
"model": "qwen-audio-3.0-asr-flash-filetrans",
"input": {
"file_urls": [
"{YOUR_AUDIO_URL}"
],
"context": [
{
"role": "user",
"content": [
{
"type": "input_text",
"text": "Hello there"
}
]
},
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "Hello, I am Qwen. How can I help you?"
}
]
}
]
},
"parameters": {
"vocabulary": {"John Smith": 5, "Jane Doe": 5}
}
}
```
Parâmetros de solicitação
| Parâmetro | Tipo | Valor padrão | Obrigatório | Descrição |
|---|---|---|---|---|
| modelo | corda | - | Sim | O nome do modelo. Os valores suportados incluem o Qwen-Audio-3.0-ASR-Flash-Filetrans e Fun-ASR famílias modelo. Para obter detalhes, consulte Modelos e regiões compatíveis. |
| arquivo_urls | matriz[string] | - | 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. |
| contexto | matriz(objeto) | - | Não | Uma lista de mensagens que fornecem contexto de conversação opcional para melhorar a precisão do reconhecimento. Consulte detalhes do parâmetro de contexto. |
| manter_dialeto | booleano | falso | Não | Suportado apenas por qwen-audio-3.1-asr-flash-filetrans. Especifica se as expressões dialetais devem ser preservadas. Definir como false transcrever a fala do dialeto como texto padrão em mandarim, ou true para preservar expressões dialetais. |
| vocabulário_id | 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 | objeto | - | 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. |
| canal_id | matriz[inteiro] | [0] | 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. |
| especial_palavra_filtro | 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ção_habilitado | booleano | falso | 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. Consulte Descrição do resultado de reconhecimento. |
| alto-falante_contagem | inteiro | - | Não | 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). Só entra em vigor quando diarization_enabled está definido para true. 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. |
| idioma_dicas | matriz[string] | - | 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.0-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. |
Somente qwen-audio-3.0-asr-flash-filetrans suporta hotwords in-line (vocabulary parâmetro).
Cada faixa de áudio em channel_id é cobrado separadamente. Exemplo: [0, 1] em um arquivo = duas cobranças.
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.
detalhes do parâmetro de contexto
O context parâmetro é uma lista de mensagens que fornecem contexto de conversação opcional para melhorar a precisão do reconhecimento.
O SDK ainda não oferece suporte a esse recurso.
O aprimoramento do contexto melhora a precisão do reconhecimento de termos específicos de domínio. Para uso, consulte Aprimoramento de contexto.
Restrições: mensagens de contexto do input_text e text cada tipo é limitado a 5 mensagens. Se você exceder esse limite, apenas os 5 mais recentes serão mantidos. O comprimento total do texto por turno de contexto (o comprimento combinado do text campos para user e assistant) não deve exceder 400 caracteres (contados por caractere, cada caractere conta como 1). Qualquer excesso é truncado no final.
Quando você inclui contexto, a ordem das mensagens em messages questões: as mensagens de contexto devem ser organizadas por turno de conversa. Dentro de cada turno, o user mensagem (input_text tipo) deve vir antes do correspondente assistant mensagem (text tipo). Um user mensagem que contém input_audio deve ser colocado em último lugar messages matriz.
papel string (Obrigatório)
A função da mensagem. Valores válidos:
user: resultados de reconhecimento de turnos anteriores ou uma lista de palavras específicas do domínio.assistant: as respostas do modelo de linguagem grande de turnos anteriores.
conteúdo array(object) (Obrigatório)
A lista de itens de conteúdo da mensagem.
**tipo** `string` **(Obrigatório)**
O tipo de conteúdo. Valores válidos:
- `input_text` (opcional, contexto): resultados de reconhecimento da fala do usuário em turnos anteriores ou uma lista de palavras específicas do domínio (a função é usuário). Você também deve passar pelo `text` campo.
- `text` (opcional, contexto): as respostas do modelo de linguagem grande de turnos anteriores (a função é de assistente). Você também deve passar pelo `text` campo.
**texto** `string` **(Condicionalmente obrigatório)**
Quando `type` é `input_text`, insira os resultados de reconhecimento da fala do usuário em turnos anteriores ou uma lista de palavras específicas do domínio. Quando `type` é `text`, insira as respostas do modelo de linguagem grande dos turnos anteriores. O texto é contado por caractere e cada caractere conta como 1. O comprimento combinado do `text` os campos em todas as mensagens em uma mudança de contexto não devem exceder 400 caracteres. Qualquer excesso é truncado no final.
Detalhes do filtro de palavras confidenciais
Se special_word_filter não estiver definido, o filtro integrado substituirá as palavras correspondentes por asteriscos (*) de igual comprimento.
Se definido, você poderá 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. Obrigatório: Não.
- As palavras correspondentes são substituídas por asteriscos do mesmo comprimento.
- Exemplo: "Ajude-me a testar este trecho de código" torna-se "Ajude-me **** este trecho de código".
- Campo interno:
word_list-- Uma matriz de strings de palavras a serem substituídas.
-
filter_with_empty- Tipo: objeto. Obrigatório: Não.
- As palavras correspondentes são removidas do resultado.
- Exemplo: “O jogo está prestes a começar?” torna-se "O jogo está prestes a acontecer?".
- Campo interno:
word_list-- Uma matriz de strings de palavras a serem removidas.
-
system_reserved_filter- Tipo: Booleano. Obrigatório: Não. Padrão:
true. - Ativa as regras de palavras sensíveis predefinidas do sistema. Quando
true, palavras que correspondem a QwenCloud lista de palavras sensíveis são substituídos por asteriscos do mesmo comprimento.
- Tipo: Booleano. Obrigatório: Não. Padrão:
Idiomas suportados
Códigos de idiomas suportados por modelo:
- qwen-audio-3.0-asr-flash-filetrans, fun-asr:
zh: Chinêsen: Inglêsja: Japonêsko: Coreanovi: vietnamitaid: Indonésioth: Tailandêsms: malaiotl: Filipinoar: Árabebg: Búlgarohr: Croatacs: Tchecoda: dinamarquêsnl: Holandêset: Estóniofi: Finlandêsel: Gregohi: Hindihu: Húngaroga: irlandêslv: letãolt: Lituanomt: maltêspl: Polonêspt: Portuguêsro: romenosk: Eslovacosl: Eslovenosv: Sueco
Parâmetros de resposta
Clique para ver uma amostra de resposta.
{
"output": {
"task_status": "PENDING",
"task_id": "c2e5d63b-96e1-4607-bb91-************"
},
"request_id": "77ae55ae-be17-97b8-9942-************"
}
| Parâmetro | Tipo | Descrição |
|---|---|---|
| solicitação_id | corda | O identificador exclusivo desta chamada. |
| tarefa_status | corda | O status da tarefa. Devoluções PENDING no envio bem-sucedido. |
| tarefa_id | corda | O ID da tarefa. Use-o com a Interface de tarefa de consulta para verificar os resultados. |
Interface de tarefa de consulta
Informações básicas
| Artigo | Descrição |
|---|---|
| Descrição | Consulta o status de execução e o resultado de uma tarefa de reconhecimento de fala. Pesquise esta interface até que a tarefa atinja um estado terminal. |
| URL | https://maas.qwencloudapi.com/api/v1/tasks/\{task_id\} |
| Método de solicitação | OBTER |
| Solicitar cabeçalhos | Veja abaixo |
| Corpo da mensagem | Nenhum |
Cabeçalhos de solicitação:
Authorization: Bearer $DASHSCOPE_API_KEY
Parâmetros de solicitação
Clique para ver uma amostra de pedido.
curl --location 'https://maas.qwencloudapi.com/api/v1/tasks/{task_id}' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
| Parâmetro | Tipo | Valor padrão | Obrigatório | Descrição |
|---|---|---|---|---|
| tarefa_id | corda | - | Sim | Este parâmetro é um parâmetro de caminho de URL. Não há corpo de solicitação. Para consultar uma tarefa, especifique seu ID. Este ID é o task_id retornado quando a interface de envio de tarefa é chamado. |
Parâmetros de resposta
Trabalhos com múltiplas subtarefas: o status geral é exibido SUCCEEDED se alguma subtarefa for bem-sucedida. Verifique subtask_status para determinar o resultado de uma subtarefa específica.
Clique para ver uma amostra de resposta (sucesso)
{
"request_id": "f9e1afad-94d3-997e-a83b-************",
"output": {
"task_id": "f86ec806-4d73-485f-a24f-************",
"task_status": "SUCCEEDED",
"submit_time": "2024-09-12 15:11:40.041",
"scheduled_time": "2024-09-12 15:11:40.071",
"end_time": "2024-09-12 15:11:40.903",
"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/pre/filetrans-16k/20240912/15%3A11/3bdf7689-b598-409d-806a-121cff5e4a31-1.json?Expires=1726211500&OSSAccessKeyId=yourOSSAccessKeyId&Signature=Fj%2BaF%2FH0Kayj3w3My2ECBeP****%3D",
"subtask_status": "SUCCEEDED"
},
{
"file_url": "{YOUR_AUDIO_URL}",
"transcription_url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/pre/filetrans-16k/20240912/15%3A11/409a4b92-445b-4dd8-8c1d-f110954d82d8-1.json?Expires=1726211500&OSSAccessKeyId=yourOSSAccessKeyId&Signature=v5Owy5qoAfT7mzGmQgH0g8C****%3D",
"subtask_status": "SUCCEEDED"
}
],
"task_metrics": {
"TOTAL": 2,
"SUCCEEDED": 2,
"FAILED": 0
}
},
"usage": {
"duration": 9
}
}
Clique para ver uma amostra de resposta (falha parcial)
O code campo contém o código do erro e o message campo contém a mensagem de erro. Esses campos aparecem apenas em erros.
{
"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": "FILE_DOWNLOAD_FAILED",
"message": "FILE_DOWNLOAD_FAILED",
"subtask_status": "FAILED"
}
],
"task_metrics": {
"TOTAL": 2,
"SUCCEEDED": 1,
"FAILED": 1
}
}
| Parâmetro | Tipo | Descrição |
|---|---|---|
| solicitação_id | corda | O identificador exclusivo desta chamada. |
| tarefa_id | corda | O ID da tarefa. |
| tarefa_status | corda | O status da tarefa. |
| subtarefa_status | corda | O status da subtarefa. |
| arquivo_url | corda | A URL do arquivo processado pela tarefa de transcrição de arquivo. |
| transcrição_url | corda | O link para o resultado do reconhecimento. Este link é válido por 24 horas. Após expirar, você não poderá consultar a tarefa ou fazer download do resultado por meio da URL retornada por uma consulta anterior. O resultado do reconhecimento é salvo como um arquivo JSON. Você pode baixar o arquivo através do link acima ou ler seu conteúdo diretamente com uma solicitação HTTP. Para saber o significado de cada campo nos dados JSON, consulte Descrição do resultado de reconhecimento. |
| enviar_hora | corda | A hora em que a tarefa foi enviada. |
| agendado_hora | corda | A hora em que a tarefa foi agendada para execução. |
| fim_hora | corda | A hora em que a tarefa terminou. |
| tarefa_métricas | objeto | Estatísticas gerais de execução da tarefa: TOTAL, SUCCEEDED (número de subtarefas bem-sucedidas) e FAILED conta. |
| uso | objeto | Informações de uso. duration é a duração total em segundos. |
Outras interfaces: status da tarefa de consulta em lote/cancelar uma tarefa
Para obter detalhes, consulte Gerenciar tarefas assíncronas: você pode consultar em lote tarefas de reconhecimento de fala que não sejam em tempo real enviadas nas últimas 24 horas e cancelar tarefas no PENDING estado (na fila).
Descrição do resultado do reconhecimento
O resultado do reconhecimento é salvo como 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": ", "
}
]
}
]
}
]
}
O `speaker_id` O campo aparece somente quando a diarização do alto-falante está habilitada. Outras entradas de palavras são omitidas por questões de brevidade.
Parâmetros principais:
| 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 faixa ú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_em_milissegundos | inteiro | A duração (ms) do conteúdo da faixa identificado como fala. |
| texto | 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). |
| 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. |
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.
Fun-ASR-Flash (síncrono)
As chamadas SDK não são suportadas para este recurso. Use a API HTTP diretamente.
Informações básicas
| Artigo | Descrição |
|---|---|
| Descrição | Transcreve de forma síncrona um arquivo de áudio com até 5 minutos de duração. Opcionalmente, aceita o contexto da conversa para melhorar o reconhecimento de nomes próprios. |
| URL | https://maas.qwencloudapi.com/api/v1/services/aigc/multimodal-generation/generation |
| Método de solicitação | POSTAR |
| Solicitar cabeçalhos | Veja abaixo |
| Corpo da mensagem | Veja abaixo |
Cabeçalhos de solicitação:
Authorization: Bearer $DASHSCOPE_API_KEY
Content-Type: application/json
X-DashScope-SSE: enable
Definir X-DashScope-SSE para enable para ativar o modo de streaming SSE. O servidor transmite apenas resultados de reconhecimento intermediários em vários eventos quando o áudio tem pelo menos 1 minuto de duração; caso contrário, apenas o resultado final será retornado. Definir X-DashScope-SSE para disable (ou omitir o cabeçalho) para receber apenas o resultado final.
Parâmetros de solicitação
Non-streaming
```bash
curl --location --request POST 'https://maas.qwencloudapi.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--header "X-DashScope-SSE: disable" \
--data '{
"model": "fun-asr-flash-2026-06-15",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav"
}
}
]
}
]
},
"parameters": {
"format": "wav",
"sample_rate": "16000"
}
}'
```
Streaming
```bash
curl --location --request POST 'https://maas.qwencloudapi.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--header "X-DashScope-SSE: enable" \
--data '{
"model": "fun-asr-flash-2026-06-15",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav"
}
}
]
}
]
},
"parameters": {
"format": "wav",
"sample_rate": "16000"
}
}'
```
With context
```bash
curl --location --request POST 'https://maas.qwencloudapi.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--header "X-DashScope-SSE: disable" \
--data '{
"model": "fun-asr-flash-2026-06-15",
"input": {
"messages": [
{
"role": "user",
"content": [{"type": "input_text", "text": "Hello!"}]
},
{
"role": "assistant",
"content": [{"type": "text", "text": "Hello! I am Tongyi Qianwen. How can I help you?"}]
},
{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav"
}
}
]
}
]
},
"parameters": {
"format": "wav",
"sample_rate": "16000"
}
}'
```
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| modelo | corda | Sim | Definir como fun-asr-flash-2026-06-15. |
| mensagens de entrada | matriz[objeto] | Sim | A lista de mensagens. Contém o áudio a ser transcrito e, opcionalmente, o contexto da conversa para melhorar a precisão do reconhecimento. |
| input.messages[].role | corda | Sim | user: o áudio a ser transcrito (input_audio tipo) ou uma transcrição/lista de palavras do turno anterior para contexto (input_text tipo). assistant (opcional, para contexto): uma resposta LLM de um turno anterior. |
| input.messages[].content[].type | corda | Sim | input_audio (obrigatório, a função deve ser user): o áudio a ser transcrito. input_text (opcional, para contexto, a função deve ser user): um resultado de transcrição anterior ou lista de palavras específicas do domínio. text (opcional, para contexto, a função deve ser assistant): uma resposta LLM de um turno anterior. |
| input.messages[].content[].input_audio.data | corda | Condicional | Obrigatório quando type é input_audio. Um URL de arquivo de áudio acessível publicamente ou um Base64 Data URI (data:{MIME_TYPE};base64,{DATA}, por exemplo audio/wav ou audio/mp3). |
| input.messages[].content[].texto | corda | Condicional | Obrigatório quando type é input_text ou text. O comprimento do texto é contado por caractere; o comprimento combinado de todos text os campos por turno não devem exceder 400 caracteres, com o excesso truncado no final. |
| parâmetros.formato | corda | Sim | O formato de áudio, por exemplo wav, mp3, ou opus. |
| parâmetros.sample_rate | corda | Não | A taxa de amostragem de áudio em Hz, por exemplo 16000. |
Mensagens de contexto (input_text e text tipos) são limitados a 5 cada. Quando excedido, apenas os 5 mais recentes são retidos. A ordem das mensagens é importante: cada user mensagem de contexto deve preceder seu correspondente assistant mensagem, e o user mensagem com input_audio deve ser sempre o último em input.messages.
###Base64
Você pode fornecer áudio codificado em Base64 como um URI de dados no formato data:{MIME_TYPE};base64,{DATA}:
{MIME_TYPE}: tipo MIME, que varia de acordo com o formato de áudio. Por exemplo: WAV usaaudio/wav, MP3 usaaudio/mpeg.{DATA}: a string codificada em Base64 do arquivo de áudio.
A codificação Base64 aumenta o tamanho do arquivo. Mantenha o arquivo original pequeno o suficiente para que os dados codificados ainda atinjam o limite de tamanho de entrada de áudio (10 MB).
Exemplo: data:audio/wav;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA//PAxABQ/BXRbMPe4IQAhl9
Python
```python
import base64, pathlib
# input.mp3 is the local audio file to recognize. Replace it with the path to your own audio file and make sure it meets the audio requirements.
file_path = pathlib.Path("input.mp3")
base64_str = base64.b64encode(file_path.read_bytes()).decode()
data_uri = f"data:audio/mpeg;base64,{base64_str}"
```
Java
```java
import java.nio.file.*;
import java.util.Base64;
public class Main {
/**
* filePath is the local audio file to recognize. Replace it with the path to your own audio file and make sure it meets the audio requirements.
*/
public static String toDataUri(String filePath) throws Exception {
byte[] bytes = Files.readAllBytes(Paths.get(filePath));
String encoded = Base64.getEncoder().encodeToString(bytes);
return "data:audio/mpeg;base64," + encoded;
}
public static void main(String[] args) throws Exception {
System.out.println(toDataUri("input.mp3"));
}
}
```
Parâmetros de resposta
Non-streaming
```json
{
"output": {
"sentence": {
"begin_time": 760,
"channel_id": 0,
"end_time": 3800,
"sentence_end": true,
"sentence_id": 1,
"text": "Hello world, this is Alibaba Speech Lab.",
"words": [
{"begin_time": 760, "end_time": 1040, "fixed": true, "punctuation": "", "text": "Hello"},
{"begin_time": 1040, "end_time": 1360, "fixed": true, "punctuation": ", ", "text": " world"}
]
},
"text": "Hello world, this is Alibaba Speech Lab."
},
"usage": {
"duration": 4
},
"request_id": "40e0734d-096f-9ae3-86c1-a8c013287561"
}
```
Streaming
Quando `X-DashScope-SSE: enable` estiver definido, o servidor transmitirá os resultados usando o protocolo Server-Sent Events (SSE). Cada evento tem o formato:
```plaintext
id:{sequence_number}
event:result
:HTTP_STATUS/200
data:{JSON data}
```
| Parâmetro | Tipo | Descrição |
|---|---|---|
| solicitação_id | corda | O identificador exclusivo desta solicitação. |
| saída.texto | corda | O texto completo da transcrição acumulada até este ponto. |
| saída.sentença.sentença_id | inteiro | O número da frase, começando em 1. |
| saída.sentença.sentença_end | booleano | Se o reconhecimento desta frase está completo. |
| saída.sentença.begin_time | inteiro | A hora de início da frase (ms). |
| saída.sentença.end_time | inteiro | O horário de término da frase (ms). Devolvido somente quando sentence_end é true. |
| saída.sentença.texto | corda | O texto de transcrição da frase atual. |
| saída.sentença.canal_id | inteiro | O número do canal de áudio, começando em 0. |
| saída.sentença.palavras | matriz | A lista de carimbos de data/hora em nível de palavra. |
| saída.sentença.palavras[].texto | corda | A palavra texto. |
| saída.sentença.palavras[].begin_time | inteiro | A palavra hora de início (ms). |
| saída.sentença.palavras[].end_time | inteiro | A palavra hora de término (ms). |
| saída.sentença.palavras[].pontuação | corda | O sinal de pontuação após a palavra, se houver. |
| saída.sentença.palavras[].fixo | booleano | Se a palavra está finalizada. false significa que o carimbo de data/hora ainda pode mudar em eventos posteriores. |
| uso.duração | inteiro | A duração do áudio processado, em segundos. Devolvido somente quando sentence_end é true. |
Para cada evento SSE, analise o JSON no arquivo data campo e verifique output.sentence.sentence_end para determinar se a sentença é final. usage está incluído apenas em eventos de final de frase.