Parâmetros e API do Python SDK para reconhecimento de arquivos de áudio Paraformer.
Pré-requisitos
Primeiros passos
A classe principal (Transcription) fornece métodos para enviar tarefas de forma assíncrona, aguardar sua conclusão sincronamente e consultar resultados de tarefas assincronamente. 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
-
Chame o método
async_callda classe principal (Transcription) e defina os parâmetros de solicitaçã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.
- 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 (
-
Chame o método
waitda classe principal (Transcription) para aguardar sincronamente a conclusão da tarefa. Uma tarefa pode ter o statusPENDING,RUNNING,SUCCEEDEDouFAILED. A chamadawaitfica bloqueada enquanto a tarefa estiver no estadoPENDINGouRUNNING. Se a tarefa forSUCCEEDEDouFAILED, o métodowaitretorna o resultado da tarefa. O métodowaitretorna um objeto TranscriptionResponse.
Clique em para visualizar o exemplo completo
Clique em para visualizar o exemplo completo
Envio assíncrono de tarefa + consulta assíncrona dos resultados
-
Chame o método
async_callda classe principal Transcription e defina os parâmetros de solicitaçã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.
- 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 (
-
Continue chamando o método
fetchda classe principal (Transcription) até recuperar o resultado final da tarefa. Quando o status da tarefa forSUCCEEDEDouFAILED, interrompa a sondagem e processe o resultado. O métodofetchretorna um objeto TranscriptionResponse.
Clique em para visualizar o exemplo completo
Clique em para visualizar o exemplo completo
Parâmetros de solicitação
Defina os parâmetros de solicitação usando o método async_call da classe principal (Transcription).
| Parâmetro | Tipo | Padrão | Obrigatório | Descriçã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. |
| 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:
| |
| 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:
|
| 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.Se 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. 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
TranscriptionResponse
Um objeto TranscriptionResponse contém informações da tarefa, como task_id e task_status, além do resultado da execução. A propriedade output armazena o resultado da execução. Consulte TranscriptionOutput.
Clique em para visualizar exemplos da estrutura TranscriptionResponse
Clique em para visualizar exemplos da estrutura TranscriptionResponse
TranscriptionResponse retornado por async_call não inclui submit_time ou scheduled_time.submit_time e scheduled_time, use os métodos wait() ou fetch() em vez de usar diretamente o valor de retorno de async_call(). O TranscriptionResponse retornado por wait() ou fetch():Parâmetro | Descrição |
|---|---|
status_code | Código de status da solicitação HTTP. |
code |
|
message |
|
task_id | ID da tarefa. |
task_status | Status da tarefa. Os quatro status possíveis são Quando uma tarefa contém várias subtarefas, se qualquer subtarefa for bem-sucedida, o status geral da tarefa será marcado como |
results | Resultados de reconhecimento das subtarefas. |
subtask_status | Status da subtarefa. Os quatro status possíveis são |
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 |
TranscriptionOutput
Um objeto TranscriptionOutput é a propriedade output de um objeto TranscriptionResponse, contendo o resultado da execução da tarefa.
Clique em para visualizar exemplos da estrutura TranscriptionOutput
Clique em para visualizar exemplos da estrutura TranscriptionOutput
- Status PENDING
- Status RUNNING
- Status SUCCEEDED
- Status FAILED
Parâmetro | Descrição |
|---|---|
code | Código de erro. Use junto com o campo |
message | Mensagem de erro. Use junto com o campo |
task_id | ID da tarefa. |
task_status | Status da tarefa. Os quatro status possíveis são Quando uma tarefa contém várias subtarefas, se qualquer subtarefa for bem-sucedida, o status geral da tarefa será marcado como |
results | Resultados de reconhecimento das subtarefas. |
subtask_status | Status da subtarefa. Os quatro status possíveis são |
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 |
Descrição do resultado de reconhecimento
O resultado do reconhecimento é salvo como um arquivo JSON.
Clique em para visualizar exemplo de resultado de reconhecimento
Clique em para visualizar exemplo de resultado de reconhecimento
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
Classe principal (Transcription)
Importe a classe Transcription: from dashscope.audio.asr import Transcription.
| Método membro | Assinatura do método | Descrição |
|---|---|---|
| async_call | Envie uma tarefa de reconhecimento de fala de forma assíncrona.Este método retorna TranscriptionResponse. | |
| wait | Bloqueia a thread atual até que a tarefa assíncrona seja concluída (status é SUCCEEDED ou FAILED).Este método retorna TranscriptionResponse. | |
| fetch | Consulta o resultado da execução da tarefa de forma assíncrona.Este método retorna um TranscriptionResponse. |
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:
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
1. Escolha um método de armazenamento e hospedagem
-
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
2. Faça upload dos arquivos de áudio
-
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.
- Coloque os arquivos de áudio no diretório designado do servidor (como
3. Gere uma URL publicamente acessível
3. Gere uma URL publicamente acessível
-
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.
- Após o upload, o sistema gera automaticamente uma URL de acesso público (geralmente no formato
-
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).
- A URL de acesso ao arquivo é tipicamente o endereço do servidor mais o caminho do arquivo (como
-
CDN:
- Após configurar a aceleração CDN, use a URL fornecida pela CDN (como
https://cdn.your-domain.com/audio/file.mp3).
- Após configurar a aceleração CDN, use a URL fornecida pela CDN (como
4. Verifique a acessibilidade da URL
4. Verifique a acessibilidade da URL
- Abra a URL em um navegador e verifique se o arquivo de áudio pode ser reproduzido.
- Use ferramentas (como
curlou Postman) para verificar se a URL retorna uma resposta HTTP correta (código de status 200).
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çãolanguage_hintsestá correta. - Se nenhuma das opções acima resolver o problema, personalize palavras-chave para melhorar o reconhecimento de palavras específicas.