Todos os produtos
Search
Central de documentação

Alibaba Cloud Model Studio:Python SDK

Última atualização: Oct 27, 2026

Parâmetros e API do Python SDK para reconhecimento de arquivos de áudio Paraformer.

ImportanteEste documento aplica-se apenas à região Chinese mainland (Beijing). Para usar o modelo, utilize uma chave de API da região Chinese mainland (Beijing).

ImportanteO Alibaba Cloud Model Studio lançou um domínio específico por workspace para a região China (Beijing). O novo domínio dedicado oferece desempenho superior e maior estabilidade para solicitações de inferência. Recomendamos migrar de dashscope.aliyuncs.com para {WorkspaceId}.cn-beijing.maas.aliyuncs.com.

Substitua {WorkspaceId} pelo seu ID do Workspace real. O domínio existente permanece totalmente funcional.

Guia do usuário:Reconhecimento de fala não em tempo real

Pré-requisitos

Ative o serviço e Obtenha uma chave de API. Configure a chave de API como variável de ambiente em vez de codificá-la diretamente no código para evitar riscos de segurança causados por vazamento de código.

ObservaçãoQuando for necessário fornecer acesso temporário a aplicativos ou usuários terceiros, ou quando você desejar controlar rigorosamente operações de alto risco, como acessar ou excluir dados sensíveis, recomendamos o uso de tokens de autenticação temporários.

Em comparação com chaves de API de longo prazo, os tokens de autenticação temporários possuem 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 chave de API.

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

Primeiros passos

O recurso principal (client.audio.asr) fornece interfaces para enviar tarefas de forma assíncrona, aguardar sua conclusão sincronamente e consultar resultados de tarefas de forma assíncrona (transcribe em uma etapa, ou jobs.create+jobs.wait+jobs.fetch em etapas separadas). Você pode reconhecer arquivos de áudio usando uma das duas abordagens a seguir:

  • Envio assíncrono de tarefa + espera síncrona pela conclusão: Após enviar uma tarefa, a thread atual é bloqueada até que a tarefa seja concluída e o resultado do reconhecimento seja retornado.
  • Envio assíncrono de tarefa + consulta assíncrona dos resultados: Após enviar uma tarefa, consulte o resultado da tarefa a qualquer momento.

Envio assíncrono de tarefa + espera síncrona pela conclusão

image
  1. Chame o recurso principal (client.audio.asr) (jobs.create/transcribe) e defina os parâmetros de solicitação.

    Observação

    • O serviço de transcrição de arquivos processa as 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; não é possível estimá-lo com precisão, mas geralmente a conclusão ocorre em alguns minutos. Uma vez iniciado o processamento, 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 o link de download da URL permanecem válidos por 24 horas. Após a expiração, não é possível consultar a tarefa ou baixar os resultados pela URL fornecida anteriormente.
  2. Chame o recurso principal (client.audio.asr) (jobs.wait, ou transcribe em uma etapa) para aguardar sincronamente a conclusão da tarefa.

    Uma tarefa pode ter o status PENDING, RUNNING, SUCCEEDED ou FAILED. A chamada wait fica bloqueada enquanto a tarefa estiver no estado PENDING ou RUNNING. Se a tarefa for SUCCEEDED ou FAILED, o método wait retorna o resultado da tarefa.

    O método jobs.wait retorna o Job em estado terminal (estrutura descrita em parâmetros de resposta).

Clique em para visualizar o exemplo completo

import os
import json
import dashscope

# Se a variável de ambiente não estiver configurada, substitua a linha abaixo pela sua API Key do Model Studio: api_key="sk-xxx"
# A configuração abaixo refere-se à região China (Beijing). Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
client = dashscope.Client(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="cn-beijing",
)

# Envie a tarefa de reconhecimento de arquivo de áudio e aguarde sincronamente a sua conclusão
job = client.audio.asr.transcribe(
    ['https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav'],
    model='paraformer-v2',
    parameters={'language_hints': ['zh', 'en']}  # O parâmetro "language_hints" só é suportado pelo modelo paraformer-v2
)

print(json.dumps(job.model_dump(), indent=4, ensure_ascii=False))
print('transcription done!')

Envio assíncrono de tarefa + consulta assíncrona dos resultados

image
  1. Chame o recurso principal (client.audio.asr) (jobs.create/transcribe) e defina os parâmetros de solicitação.

    Observação

    • O serviço de transcrição de arquivos processa as 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; não é possível estimá-lo com precisão, mas geralmente a conclusão ocorre em alguns minutos. Uma vez iniciado o processamento, 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 o link de download da URL permanecem válidos por 24 horas. Após a expiração, não é possível consultar a tarefa ou baixar os resultados pela URL fornecida anteriormente.
  2. Continue chamando o recurso principal (client.audio.asr) (jobs.fetch) até recuperar o resultado final da tarefa.

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

    O método jobs.fetch retorna um Job (estrutura descrita em parâmetros de resposta).

Clique em para visualizar o exemplo completo

import os
import json
import dashscope
# A configuração abaixo refere-se à região China (Beijing). Substitua {WorkspaceId} pelo ID real do seu workspace. O valor de region varia conforme a região.
client = dashscope.Client(
    # Se a variável de ambiente não estiver configurada, substitua a linha abaixo pela sua API Key do Model Studio: api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="cn-beijing",
)

# Envie a tarefa de reconhecimento de arquivo de áudio
job = client.audio.asr.jobs.create(
    model='paraformer-v2',
    file_urls=['https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav'],
    parameters={'language_hints': ['zh', 'en']}  # O parâmetro "language_hints" só é suportado pelo modelo paraformer-v2
)

# Consulte a tarefa em loop até obter o resultado final
while True:
    if job.status == 'SUCCEEDED' or job.status == 'FAILED':
        break
    job = client.audio.asr.jobs.fetch(job.task_id)

print(json.dumps(job.model_dump(), indent=4, ensure_ascii=False))
print('transcription done!')

Parâmetros de solicitação

Defina os parâmetros de solicitação por meio dos métodos jobs.create/transcribe do recurso principal (client.audio.asr).

ParâmetroTipoPadrãoObrigatórioDescrição

model

str

Sim

Nome do modelo usado para transcrição de arquivos de áudio e vídeo Paraformer. Para mais informações, consulte modelos.

file_urls

list[str]

Sim

Lista de URLs para transcrição de arquivos de áudio e vídeo. Os protocolos HTTP e HTTPS são suportados. Uma única solicitação suporta apenas 1 URL.

Se os arquivos de áudio estiverem armazenados no Alibaba Cloud OSS, o SDK não suporta URLs temporárias com o prefixo oss://.

vocabulary_id

str

Não

ID do vocabulário personalizado para a tarefa de reconhecimento de fala. Suportado para modelos da série v2 e requer configuração de idioma. Este recurso está desativado por padrão. Para mais informações, consulte Vocabulários Personalizados.

channel_id

list[int]

[0]

Não

Especifica os índices das faixas de áudio a serem reconhecidas em um arquivo de áudio com múltiplas faixas. Os índices começam em 0. Por exemplo, [0] significa reconhecer a primeira faixa, e [0, 1] significa reconhecer simultaneamente a primeira e a segunda faixas. Se este parâmetro for omitido, apenas a primeira faixa será processada por padrão.

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

disfluency_removal_enabled

bool

False

Não

Define se palavras de preenchimento devem ser filtradas. Este recurso está desativado por padrão.

timestamp_alignment_enabled

bool

False

Não

Define se o recurso de alinhamento de carimbo de data/hora deve ser ativado. Este recurso está desativado por padrão.

special_word_filter

str

Não

Especifica palavras sensíveis a serem processadas durante o reconhecimento de fala e permite definir diferentes métodos de processamento para diferentes palavras sensíveis.

Se este parâmetro não for fornecido, o sistema usa a lógica interna de filtragem de palavras sensíveis, e as palavras correspondentes na lista de palavras sensíveis do Alibaba Cloud Model Studio nos resultados de reconhecimento serão substituídas por * de igual comprimento.

Se este parâmetro for fornecido, as seguintes estratégias de processamento de palavras sensíveis podem ser implementadas:

  • Substituir por : Substitui palavras sensíveis correspondentes por de igual comprimento.
  • Filtrar diretamente: Remove completamente as palavras sensíveis correspondentes dos resultados de reconhecimento.

O valor deste parâmetro deve ser uma string JSON com a seguinte estrutura:

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

Descrições dos campos JSON:

  • filter_with_signed

    • Tipo: Object.

    • Obrigatório: Não.

    • Descrição: Configura a lista de palavras sensíveis a serem substituídas por . As palavras correspondentes nos resultados de reconhecimento serão substituídas por de igual comprimento.

    • Exemplo: Usando o JSON acima, o resultado do reconhecimento de fala para "Help me test this code" seria "Help me **** this code".

    • Campos internos:

      • word_list: Um array de strings listando as palavras sensíveis a serem substituídas.
  • filter_with_empty

    • Tipo: Object.

    • Obrigatório: Não.

    • Descrição: Configura a lista de palavras sensíveis a serem removidas (filtradas) dos resultados de reconhecimento. As palavras correspondentes serão completamente excluídas.

    • Exemplo: Usando o JSON acima, o resultado do reconhecimento de fala para "The game is about to start, right?" seria "The game is about to, right?".

    • Campos internos:

      • word_list: Um array de strings listando as palavras sensíveis a serem completamente removidas (filtradas).
  • system_reserved_filter

    • Tipo: Boolean.
    • Obrigatório: Não.
    • Padrão: true.
    • Descrição: Define se as regras internas de palavras sensíveis do sistema devem ser ativadas. Quando definido como true, a lógica interna de filtragem de palavras sensíveis do sistema também é ativada, e as palavras correspondentes na lista de palavras sensíveis do Alibaba Cloud Model Studio nos resultados de reconhecimento serão substituídas por * de igual comprimento.

language_hints

list[str]

["zh", "en"]

Não

Especifica os códigos de idioma da fala a ser reconhecida.

Este parâmetro aplica-se apenas ao modelo paraformer-v2.

Códigos de idioma suportados:

  • zh: Chinês
  • en: Inglês
  • ja: Japonês
  • yue: Cantonês
  • ko: Coreano
  • de: Alemão
  • fr: Francês
  • ru: Russo

diarization_enabled

bool

False

Não

Diarização automática de falantes. Desativada por padrão.

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

Quando este recurso está ativado, os resultados do reconhecimento incluirão um campo speaker_id para distinguir diferentes falantes.

ObservaçãoSe a diarização de falantes estiver ativada, recomenda-se que a duração do áudio não exceda 2 horas; caso contrário, o reconhecimento pode falhar ou atingir o tempo limite.

Para um exemplo de speaker_id, consulte Descrição dos resultados de reconhecimento.

speaker_count

int

Não

Valor de referência para o número de falantes. O valor deve ser um inteiro de 2 a 100, inclusive.

Tem efeito apenas quando a diarização de falantes está ativada (diarization_enabled definido como true).

Por padrão, a contagem de falantes é determinada automaticamente. Definir este parâmetro orienta o algoritmo para a contagem de falantes especificada, mas não garante o número exato.

Resultados da resposta

Job

O Job encapsula as informações básicas da tarefa (task_id e status) e o resultado da execução (results, consulte resultados de reconhecimento das subtarefas, task_metrics, usage). O Job retornado por jobs.create após o envio da tarefa contém apenas task_id e status; o Job retornado por jobs.fetch, jobs.wait (e pelo transcribe em uma etapa) contém o resultado da execução da tarefa.

Clique em para visualizar exemplos da estrutura Job

Exemplo do Job retornado pelo método jobs.create (a tarefa fica no estado PENDING após o envio):

{
    "request_id":"251aceab-a6aa-9fc4-b7f7-0cc6d3e2a9f3",
    "task_id":"7d0a58a3-1dbe-4de9-8cff-5f48213128b0",
    "status":"PENDING"
}

Exemplo do Job retornado por jobs.fetch, jobs.wait (e pelo transcribe em uma etapa):

{
    "request_id":"251aceab-a6aa-9fc4-b7f7-0cc6d3e2a9f3",
    "task_id":"7d0a58a3-1dbe-4de9-8cff-5f48213128b0",
    "status":"PENDING",
    "task_metrics":{
        "TOTAL":1,
        "SUCCEEDED":0,
        "FAILED":0
    }
}
{
    "request_id":"d9d530f1-853c-9848-a5f1-f5de59086ff7",
    "task_id":"6351feef-9694-45d2-9d32-63454f2ffb8d",
    "status":"RUNNING",
    "task_metrics":{
        "TOTAL":1,
        "SUCCEEDED":0,
        "FAILED":0
    }
}
{
    "request_id":"16668704-6702-9e03-8ab7-a32a5d7bb095",
    "task_id":"6351feef-9694-45d2-9d32-63454f2ffb8d",
    "status":"SUCCEEDED",
    "results":[
        {
            "file_url":"https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
            "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
    }
}
{
    "request_id":"16668704-6702-9e03-8ab7-a32a5d7bb095",
    "task_id":"7bac899c-06ec-4a79-8875-xxxxxxxxxxxx",
    "status":"SUCCEEDED",
    "results":[
        {
            "file_url":"https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/sensevoice/rich_text_exaple_1.wav",
            "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 principais:

Parâmetro

Descrição

request_id

ID gerado pelo sistema para identificar esta chamada.

task_id

ID da tarefa.

status

Status da tarefa.

Os quatro status possíveis são PENDING, RUNNING, SUCCEEDED e FAILED.

Quando uma tarefa contém várias subtarefas, se qualquer subtarefa for bem-sucedida, o status geral da tarefa será marcado como SUCCEEDED. Verifique o campo subtask_status para determinar o resultado de cada subtarefa específica.

results

Resultados de reconhecimento das subtarefas; cada item contém file_url, transcription_url e subtask_status. Consulte resultados de reconhecimento das subtarefas.

subtask_status

Status da subtarefa.

Os quatro status possíveis são PENDING, RUNNING, SUCCEEDED e FAILED.

file_url

URL do arquivo de áudio a ser reconhecido.

transcription_url

URL correspondente ao resultado do reconhecimento de áudio.

O resultado do reconhecimento é salvo como um arquivo JSON. Baixe o arquivo da URL em transcription_url ou leia seu conteúdo via solicitação HTTP. Para detalhes sobre o conteúdo do arquivo JSON, consulte Descrição do resultado de reconhecimento.

usage

Informações de medição, incluindo duration (duração do áudio, em segundos).

Quando a chamada falha, o Python SDK lança uma exceção DashScopeError; use e.code/e.status_code/e.message/e.request_id para obter o código de erro, o código de status HTTP, a mensagem de erro e o request ID. A falha de uma subtarefa não lança exceção — verifique subtask_status, code e message em results.

results (resultados de reconhecimento das subtarefas)

O array results corresponde ao resultado de reconhecimento de cada arquivo de áudio no Job; cada item contém file_url, transcription_url e subtask_status; quando a subtarefa falha, também contém code e message.

Clique em para visualizar exemplos da estrutura results

Status SUCCEEDED

{
    "file_url":"https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
    "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"
}

Status FAILED

code é o código de erro e message é a mensagem de erro; esses dois campos existem apenas quando a subtarefa falha. Use-os em conjunto e consulte Códigos de erro para solucionar problemas.

{
    "file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/sensevoice/rich_text_exaple_1.wav",
    "code": "InvalidFile.DownloadFailed",
    "message": "The audio file cannot be downloaded.",
    "subtask_status": "FAILED"
}

Parâmetros importantes:

Parâmetro

Descrição

code

Código de erro. Use junto com o campo message. Consulte Códigos de erro.

message

Mensagem de erro. Use junto com o campo code. Consulte Códigos de erro.

subtask_status

Status da subtarefa.

Os quatro status possíveis são PENDING, RUNNING, SUCCEEDED e FAILED.

file_url

URL do arquivo de áudio a ser reconhecido.

transcription_url

URL correspondente ao resultado do reconhecimento de áudio.

O resultado do reconhecimento é salvo em um arquivo JSON. Baixe o arquivo de transcription_url ou leia seu conteúdo via solicitação HTTP. Para detalhes sobre o conteúdo JSON, consulte Descrição do resultado de reconhecimento.

Descrição do resultado de reconhecimento

O resultado do reconhecimento é salvo como um arquivo JSON.

Clique em para visualizar exemplo de resultado de reconhecimento

{
    "file_url":"https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
    "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 the Alibaba speech laboratory.",
            "sentences":[
                {
                    "begin_time":100,
                    "end_time":3820,
                    "text":"Hello world, this is the Alibaba speech laboratory.",
                    "sentence_id":1,
                    "speaker_id":0, // Este campo é exibido apenas quando a diarização automática de falantes está ativada
                    "words":[
                        {
                            "begin_time":100,
                            "end_time":596,
                            "text":"Hello ",
                            "punctuation":""
                        },
                        {
                            "begin_time":596,
                            "end_time":844,
                            "text":"world",
                            "punctuation":", "
                        }
                        // Outros conteúdos são omitidos aqui
                    ]
                }
            ]
        }
    ]
}

Os parâmetros principais são:

Parâmetro

Tipo

Descrição

audio_format

string

Formato de áudio do arquivo de source.

channels

array[integer]

Informações de índice de faixa de áudio do arquivo de source. Retorna [0] para áudio mono, [0, 1] para áudio de duas faixas, e assim por diante.

original_sampling_rate

integer

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

original_duration

integer

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

channel_id

integer

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

content_duration

integer

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

O serviço de modelo de reconhecimento de fala Paraformer transcreve e mede apenas o conteúdo identificado como fala na faixa de áudio, faturando de acordo. Conteúdo sem 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 determinação da existência de conteúdo de fala é feita por um modelo de IA, pode haver algum desvio em relação à situação real.

transcript

string

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

sentences

array

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

words

array

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

begin_time

integer

Carimbo de data/hora inicial (ms).

end_time

integer

Carimbo de data/hora final (ms).

text

string

Resultado da transcrição de fala.

speaker_id

integer

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

Este campo é exibido nos resultados de reconhecimento apenas quando a diarização de falantes está ativada.

punctuation

string

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

Interfaces principais

Recurso principal (client.audio.asr)

O reconhecimento de fala não em tempo real é montado no recurso client.audio.asr: use client.audio.asr.transcribe para concluir o envio e a espera em uma etapa, ou use client.audio.asr.jobs para o controle em etapas separadas.

Método membroAssinatura do métodoDescrição

transcribe

def transcribe(self,
               file_urls: List[str],
               *,
               model: str = "paraformer-v2",
               parameters: Dict = None,
               phrase_id: str = None,
               timeout: float = ...,
               ...) -> Job

Envia a tarefa de reconhecimento de arquivo de áudio e bloqueia a thread atual até a conclusão da tarefa (status SUCCEEDED ou FAILED).

Este método retorna um Job; o resultado da transcrição é lido de job.results (cada item contém transcription_url).

jobs.create

def create(self,
           *,
           model: str,
           file_urls: List[str],
           parameters: Dict = None,
           phrase_id: str = None,
           ...) -> Job

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

Este método retorna um Job (job.task_id/job.status).

jobs.wait

def wait(self,
         task: Union[str, Job],
         poll_interval: float = 1,
         timeout: float = 86400,
         ...) -> Job

Bloqueia a thread atual até a conclusão da tarefa assíncrona (sondagem com backoff exponencial, orçamento total padrão de 24 horas).

Este método retorna o Job em estado terminal.

jobs.fetch

def fetch(self,
          task_id: str,
          ...) -> Job

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

Este método retorna um Job.

Códigos de erro

Se encontrar erros, consulte Códigos de erro para solução de problemas.

Se o problema persistir, junte-se à comunidade de desenvolvedores para relatar o problema e forneça o Request ID para investigação adicional.

Quando uma tarefa contém várias subtarefas, desde que qualquer subtarefa seja bem-sucedida, o status geral da tarefa é marcado como SUCCEEDED. É necessário verificar o campo subtask_status para determinar o resultado de cada subtarefa.

Exemplo de resposta de erro:

{
    "request_id": "16668704-6702-9e03-8ab7-a32a5d7bb095",
    "task_id": "7bac899c-06ec-4a79-8875-xxxxxxxxxxxx",
    "status": "SUCCEEDED",
    "results": [
        {
            "file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/sensevoice/rich_text_exaple_1.wav",
            "code": "InvalidFile.DownloadFailed",
            "message": "The audio file cannot be downloaded.",
            "subtask_status": "FAILED"
        }
    ],
    "task_metrics": {
        "TOTAL": 1,
        "SUCCEEDED": 0,
        "FAILED": 1
    }
}

Mais exemplos

Consulte o GitHub para mais exemplos.

FAQ

Recursos

P: Suporta áudio codificado em Base64?

Não. Áudio codificado em Base64 não é suportado. Apenas áudio acessível via URLs publicamente acessíveis é suportado. Fluxos binários e reconhecimento direto de arquivos locais não são suportados.

P: Como fornecer arquivos de áudio como URLs publicamente acessíveis?

Geralmente, siga estas etapas (esta é uma abordagem geral; os detalhes variam conforme o produto de armazenamento. Recomendamos fazer upload do áudio para o Alibaba Cloud OSS):

1. Escolha um método de armazenamento e hospedagem

Por exemplo:

  • Object Storage Service (recomendado):

    • Use o serviço de armazenamento de objetos de um provedor de nuvem (como o Alibaba Cloud OSS) para fazer upload de arquivos de áudio para um bucket e configurá-los para acesso público.
    • Vantagens: Alta disponibilidade, suporte a aceleração CDN, gerenciamento fácil.
  • Servidor web:

    • Coloque arquivos de áudio em um servidor web que suporte acesso HTTP/HTTPS (como Nginx ou Apache).
    • Vantagens: Adequado para pequenos projetos ou testes locais.
  • Content Delivery Network (CDN):

    • Hospede arquivos de áudio em uma CDN e acesse-os através da URL fornecida pela CDN.
    • Vantagens: Entrega acelerada de arquivos, adequada para cenários de alta concorrência.

2. Faça upload dos arquivos de áudio

Faça upload dos arquivos de áudio com base no método de armazenamento/hospedagem escolhido, por exemplo:

  • Object Storage Service:

    • Faça login no console do provedor de nuvem e crie um bucket.
    • Faça upload dos arquivos de áudio e defina as permissões do arquivo como "leitura pública" ou gere links de acesso temporário.
  • Servidor web:

    • Coloque os arquivos de áudio no diretório designado do servidor (como /var/www/html/audio/).
    • Garanta que os arquivos sejam acessíveis via HTTP/HTTPS.

3. Gere uma URL publicamente acessível

Por exemplo:

  • Object Storage Service:

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

    • A URL de acesso ao arquivo é tipicamente 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 a acessibilidade da URL

Em um ambiente de rede pública, garanta que a URL gerada seja acessível, por exemplo:

  • Abra a URL em um navegador e verifique se o arquivo de áudio pode ser reproduzido.
  • Use ferramentas (como curl ou Postman) para verificar se a URL retorna uma 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 expirar. Não a utilize em ambiente de produção.
  • A API para obtenção de credencial de upload é limitada a 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 serviço de armazenamento estável como o OSS para garantir disponibilidade de arquivos a longo prazo e evitar problemas de limitação de taxa.

P: Quanto tempo leva para obter resultados de reconhecimento?

Após o envio, a tarefa entra em um estado de fila (PENDING). O tempo de espera depende do tamanho da fila e da duração do arquivo; não é possível estimá-lo com precisão, mas geralmente a conclusão ocorre em alguns minutos. Aguarde pacientemente. Arquivos de áudio mais longos requerem mais tempo de processamento.

Solução de problemas

Para erros de código, consulte Códigos de erro.

P: O que devo fazer se os resultados de reconhecimento estiverem dessincronizados com a reprodução do áudio?

Defina o parâmetro de solicitação timestamp_alignment_enabled como true para ativar a calibração de carimbo de data/hora, que sincroniza os resultados de reconhecimento com a reprodução da fala.

P: O que devo fazer se a tarefa retornar um erro InvalidFile.DownloadFailed?

Verifique se a URL do arquivo contém espaços ou outros caracteres não ASCII (como caracteres chineses). Se o nome do arquivo incluir espaços (por exemplo, my audio recording.mp4), substitua cada espaço por %20 para codificar a URL do nome do arquivo antes de passá-lo ao parâmetro file_urls.

P: Não consigo obter resultados após sondagem contínua?

Isso pode ocorrer devido à limitação de taxa. Aguarde pacientemente. Se precisar de expansão de capacidade, junte-se à comunidade de desenvolvedores para solicitar.

P: Por que não há resultado de reconhecimento (incapaz de reconhecer fala)?

  • Verifique se o áudio atende aos requisitos (formato, taxa de amostragem).
  • Se estiver usando o modelo paraformer-v2, verifique se a configuração language_hints está correta.
  • Se nenhuma das opções acima resolver o problema, personalize palavras-chave para melhorar o reconhecimento de palavras específicas.

Mais perguntas

Consulte o QA no GitHub.