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 Python SDK

Última atualização: Sep 02, 2026

Este tópico descreve os parâmetros e as interfaces do SDK em Python 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 de terceiros, ou quando quiser controlar rigorosamente operações de alto risco, como acessar ou excluir dados confidenciais, recomendamos o uso de 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. Eles são adequados para cenários de chamada temporária e reduzem 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 os resultados da tarefa de forma assíncrona. Você pode executar o reconhecimento de fala não em tempo real de duas maneiras:

  • Envie a tarefa de forma assíncrona e aguarde sincronamente: após enviar a tarefa, bloqueie a thread atual até que a tarefa termine e retorne o resultado do reconhecimento.
  • Envie a tarefa de forma assíncrona e consulte o resultado de forma assíncrona: após enviar a tarefa, chame a interface de consulta para recuperar o resultado sempre que necessário.

Enviar de forma assíncrona e aguardar sincronamente

image
  1. Chame o método async_call do Core class (Transcription) e defina o Request parameters.

    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 por meio da URL retornada em uma consulta anterior.
  2. Chame o método wait do Core class (Transcription) para aguardar sincronamente a conclusão da tarefa.

    Uma tarefa pode estar em um dos seguintes estados: PENDING, RUNNING, SUCCEEDED e 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 TranscriptionResponse.

Clique para visualizar o exemplo completo

from http import HTTPStatus
from dashscope.audio.asr import Transcription
import dashscope
import os
import json

# The following is the configuration for the Singapore region. Replace "{WorkspaceId}" with your actual workspace ID. Configurations differ across regions.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# The API keys for the Singapore and Beijing regions differ. Get your 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: dashscope.api_key = "sk-xxx"
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")

task_response = Transcription.async_call(
    model='qwen-audio-3.0-asr-flash-filetrans',
    file_urls=['{YOUR_AUDIO_URL}']
)

transcribe_response = Transcription.wait(task=task_response.output.task_id)
if transcribe_response.status_code == HTTPStatus.OK:
    print(json.dumps(transcribe_response.output, indent=4, ensure_ascii=False))
    print('transcription done!')

Enviar de forma assíncrona e consultar o resultado de forma assíncrona

image
  1. Chame o método async_call do Core class (Transcription) e defina o Request parameters.

    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 por meio da URL retornada em uma consulta anterior.
  2. 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 TranscriptionResponse.

Clique para visualizar o exemplo completo

from http import HTTPStatus
from dashscope.audio.asr import Transcription
import dashscope
import os
import json

# The following is the configuration for the Singapore region. When calling, replace "{WorkspaceId}" with your actual workspace ID. Configurations differ across regions.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# 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: dashscope.api_key = "sk-xxx"
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")

transcribe_response = Transcription.async_call(
    model='qwen-audio-3.0-asr-flash-filetrans',
    file_urls=['{YOUR_AUDIO_URL}']
)

while True:
    if transcribe_response.output.task_status == 'SUCCEEDED' or transcribe_response.output.task_status == 'FAILED':
        break
    transcribe_response = Transcription.fetch(task=transcribe_response.output.task_id)

if transcribe_response.status_code == HTTPStatus.OK:
    print(json.dumps(transcribe_response.output, indent=4, ensure_ascii=False))
    print('transcription done!')

Endpoints do service

Por padrão, o SDK usa o endpoint do service da região Beijing. Para alternar para outra região, modifique dashscope.base_http_api_url antes da inicialização.

Singapore

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

Substitua {WorkspaceId} pelo seu Workspace ID real.

China (Beijing)

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

Substitua {WorkspaceId} pelo seu Workspace ID real.

Para alternar para a região Singapore:

import dashscope

# Set this at the beginning of your code
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

Nota:

  • As API keys variam conforme a região. Certifique-se de usar a API key correspondente à região escolhida.
  • A configuração de região é uma definição global que afeta todas as chamadas de API feitas por meio do DashScope SDK.

Parâmetros de solicitação

Defina os parâmetros de solicitação por meio do método async_call do Core class (Transcription).

ParâmetroTipoObrigatórioDescrição

model

str

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.

file_urls

list[str]

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 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 o 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 a 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 a utilize em produção, cenários de alta concorrência ou testes de carga.

  • Para ambientes de 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.

vocabulary_id

str

Não

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

dict

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 à medida que o valor aumenta; um valor de 50 designa uma super palavra-chave, o 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.

Exemplo:

from dashscope.audio.asr import Transcription

    vocab = {"Zhang San": 5, "Li Si": 5}
    result = Transcription.async_call(
        model="qwen-audio-3.0-asr-flash-filetrans",
        vocabulary=vocab,
        file_urls=['{YOUR_AUDIO_URL}']
    )

channel_id

list[int]

Não

O índice das faixas de áudio a serem reconhecidas em um arquivo de áudio com múltiplas faixas. 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].

special_word_filter

str

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 detalhes, consulte Sensitive word filtering.

diarization_enabled

bool

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 está 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.

speaker_count

int

Não

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

Um 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

list[str]

Não

Os códigos de idioma a serem reconhecidos. Se você não puder determinar o idioma antecipadamente, deixe-o indefinido 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 entrará em vigor.

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

Resposta

TranscriptionResponse

TranscriptionResponse encapsula as informações básicas da tarefa (task_id e task_status) e o resultado da tarefa (o conteúdo do atributo output, veja TranscriptionOutput).

Clique para visualizar uma estrutura de exemplo do TranscriptionResponse

{
    "status_code":200,
    "request_id":"251aceab-a6aa-9fc4-b7f7-0cc6d3e2a9f3",
    "code":null,
    "message":"",
    "output":{
        "task_id":"7d0a58a3-1dbe-4de9-8cff-5f48213128b0",
        "task_status":"PENDING",
        "submit_time":"2025-02-13 16:55:08.573",
        "scheduled_time":"2025-02-13 16:55:08.592",
        "task_metrics":{
            "TOTAL":1,
            "SUCCEEDED":0,
            "FAILED":0
        }
    },
    "usage":null
}
{
    "status_code":200,
    "request_id":"d9d530f1-853c-9848-a5f1-f5de59086ff7",
    "code":null,
    "message":"",
    "output":{
        "task_id":"6351feef-9694-45d2-9d32-63454f2ffb8d",
        "task_status":"RUNNING",
        "submit_time":"2025-02-13 17:31:20.681",
        "scheduled_time":"2025-02-13 17:31:20.703",
        "task_metrics":{
            "TOTAL":1,
            "SUCCEEDED":0,
            "FAILED":0
        }
    },
    "usage":null
}
{
    "status_code":200,
    "request_id":"16668704-6702-9e03-8ab7-a32a5d7bb095",
    "code":null,
    "message":"",
    "output":{
        "task_id":"6351feef-9694-45d2-9d32-63454f2ffb8d",
        "task_status":"SUCCEEDED",
        "submit_time":"2025-02-13 17:31:20.681",
        "scheduled_time":"2025-02-13 17:31:20.703",
        "end_time":"2025-02-13 17:31:21.867",
        "results":[
            {
                "file_url":"{YOUR_AUDIO_URL}",
                "transcription_url":"https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/prod/paraformer-v2/20250213/17%3A31/20ee4e4f-0404-4806-b617-c7d4c62eed19-1.json?Expires=1739525481&OSSAccessKeyId=YOUR_ACCESS_KEY_ID&Signature=YOUR_SIGNATURE",
                "subtask_status":"SUCCEEDED"
            }
        ],
        "task_metrics":{
            "TOTAL":1,
            "SUCCEEDED":1,
            "FAILED":0
        }
    },
    "usage":{
        "duration":9
    }
}
{
    "status_code":200,
    "request_id":"16668704-6702-9e03-8ab7-a32a5d7bb095",
    "code":null,
    "message":"",
    "output":{
        "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
        }
    },
    "usage":{
        "duration":9
    }
}

Parâmetros importantes:

Parâmetro

Descrição

status_code

Código de status HTTP da solicitação.

code

  • O code mais externo pode ser ignorado.

  • O code sob output.results é o código de erro. Combine-o com o campo message e consulte Error codes para solucionar o problema.

message

  • O message mais externo pode ser ignorado.

  • O message sob output.results é a mensagem de erro. Combine-a com o campo code e consulte Error codes para solucionar o problema.

task_id

ID da tarefa.

task_status

Status da tarefa.

Um dos quatro estados: PENDING, RUNNING, SUCCEEDED e FAILED.

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

results

Resultados do reconhecimento das subtarefas.

subtask_status

Status da subtarefa.

Um dos quatro estados: PENDING, RUNNING, SUCCEEDED e FAILED.

file_url

URL do áudio reconhecido.

transcription_url

URL do resultado do reconhecimento de áudio.

O resultado do reconhecimento é salvo como um arquivo JSON. Você pode baixar o arquivo pelo link associado a transcription_url ou ler seu conteúdo diretamente por meio de uma solicitação HTTP. Para o conteúdo do arquivo JSON, consulte Recognition result description.

TranscriptionOutput

TranscriptionOutput corresponde ao atributo output do TranscriptionResponse e representa o resultado da tarefa atual.

Clique para visualizar uma estrutura de exemplo do TranscriptionOutput

Estado PENDING

{
    "task_id":"f2f7c2fa-0cd9-4bb2-a283-27b26ee4bb67",
    "task_status":"PENDING",
    "submit_time":"2025-02-13 17:59:27.754",
    "scheduled_time":"2025-02-13 17:59:27.789",
    "task_metrics":{
        "TOTAL":1,
        "SUCCEEDED":0,
        "FAILED":0
    }
}

Estado RUNNING

{
    "task_id":"f2f7c2fa-0cd9-4bb2-a283-27b26ee4bb67",
    "task_status":"RUNNING",
    "submit_time":"2025-02-13 17:59:27.754",
    "scheduled_time":"2025-02-13 17:59:27.789",
    "task_metrics":{
        "TOTAL":1,
        "SUCCEEDED":0,
        "FAILED":0
    }
}

Estado SUCCEEDED

{
    "task_id":"f2f7c2fa-0cd9-4bb2-a283-27b26ee4bb67",
    "task_status":"SUCCEEDED",
    "submit_time":"2025-02-13 17:59:27.754",
    "scheduled_time":"2025-02-13 17:59:27.789",
    "end_time":"2025-02-13 17:59:28.828",
    "results":[
        {
            "file_url":"{YOUR_AUDIO_URL}",
            "transcription_url":"https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/prod/paraformer-v2/20250213/17%3A59/70e737cc-bf8c-418b-b0c8-83fab192a0fa-1.json?Expires=1739527168&OSSAccessKeyId=YOUR_ACCESS_KEY_ID&Signature=YOUR_SIGNATURE",
            "subtask_status":"SUCCEEDED"
        }
    ],
    "task_metrics":{
        "TOTAL":1,
        "SUCCEEDED":1,
        "FAILED":0
    }
}

Estado FAILED

"code" é o código de erro e "message" é a mensagem de erro. Esses dois campos aparecem apenas quando ocorre uma exceção. Use-os juntos e consulte 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
    }
}

Parâmetros importantes:

Parâmetro

Descrição

code

O código de erro. Combine-o com o campo message e consulte Error codes para solucionar o problema.

message

A mensagem de erro. Combine-a com o campo code e consulte Error codes para solucionar o problema.

task_id

ID da tarefa.

task_status

Status da tarefa.

Um dos quatro estados: PENDING, RUNNING, SUCCEEDED e FAILED.

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

results

Resultados do reconhecimento das subtarefas.

subtask_status

Status da subtarefa.

Um dos quatro estados: PENDING, RUNNING, SUCCEEDED e FAILED.

file_url

URL do áudio reconhecido.

transcription_url

URL do resultado do reconhecimento de áudio.

O resultado do reconhecimento é salvo como um arquivo JSON. Você pode baixar o arquivo pelo link associado a transcription_url ou ler seu conteúdo diretamente por meio de uma solicitação HTTP. Para o conteúdo do arquivo JSON, consulte Recognition result description.

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

O formato de áudio do arquivo de origem.

channels

array[integer]

O í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

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

original_duration_in_milliseconds

integer

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

channel_id

integer

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

content_duration

integer

A 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

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

sentences

array

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

words

array

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

begin_time

integer

O carimbo de data/hora inicial (ms).

end_time

integer

O carimbo de data/hora final (ms).

text

string

O resultado da transcrição.

speaker_id

integer

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

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

punctuation

string

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

Interfaces principais

Classe principal (Transcription)

Importe Transcription com "from dashscope.audio.asr import Transcription".

MétodoAssinaturaDescrição

async_call

@classmethod
def async_call(cls,
               model: str,
               file_urls: List[str],
               phrase_id: str = None,
               api_key: str = None,
               workspace: str = None,
               **kwargs) -> TranscriptionResponse

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

wait

@classmethod
def wait(cls,
         task: Union[str, TranscriptionResponse],
         api_key: str = None,
         workspace: str = None,
         **kwargs) -> TranscriptionResponse

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

Este método retorna um TranscriptionResponse.

fetch

@classmethod
def fetch(cls,
          task: Union[str, TranscriptionResponse],
          api_key: str = None,
          workspace: str = None,
          **kwargs) -> TranscriptionResponse

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

Este método retorna um TranscriptionResponse.

Códigos de erro

Se você encontrar um erro, consulte Error codes para solucionar o problema.

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 publicamente acessível 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 publicamente acessível?

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:

  • Service de armazenamento de objetos (recomendado):

    • Use o service de armazenamento de objetos de um provedor de cloud (como Alibaba Cloud OSS) para fazer upload do arquivo de áudio para um bucket e defini-lo como 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 por meio da URL fornecida pela CDN.
    • Vantagens: acelera a entrega de arquivos e atende a cenários de alta concorrência.

2. Faça upload do arquivo de áudio

Faça upload do áudio de acordo com o método de armazenamento ou hospedagem escolhido. Por exemplo:

  • Service de armazenamento de objetos:

    • Faça login no console do provedor de cloud e crie um bucket.
    • Faça upload do 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 publicamente acessível

Por exemplo:

  • Service de armazenamento de objetos:

    • Após o upload 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 esteja 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 a 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 a 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 você encontrar um erro de código, solucione o problema 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 contêiner 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