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
-
Chame o método
async_calldo 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.
- 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 (
-
Chame o método
waitdo Core class (Transcription) para aguardar sincronamente a conclusão da tarefa.Uma tarefa pode estar em um dos seguintes estados:
PENDING,RUNNING,SUCCEEDEDeFAILED. Enquanto a tarefa estiver no estadoPENDINGouRUNNING, a interfacewaitpermanece bloqueada. Quando a tarefa atinge o estadoSUCCEEDEDouFAILED, a interfacewaitdesbloqueia e retorna o resultado da tarefa.O método
waitretorna 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
-
Chame o método
async_calldo 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.
- 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 (
-
Chame o método
fetchdo Core class (Transcription) em um loop até obter o resultado final da tarefa.Quando o status da tarefa for
SUCCEEDEDouFAILED, interrompa a sondagem e processe o resultado.O método
fetchretorna 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âmetro | Tipo | Obrigatório | Descriçã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 Importante
|
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 ( 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 Exemplo: |
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 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_count | int | Não | ImportanteEntra em vigor apenas quando a diarização de falantes está ativada ( 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
|
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 |
|
message |
|
task_id | ID da tarefa. |
task_status | Status da tarefa. Um dos quatro estados: Quando uma tarefa contém várias subtarefas, o status geral da tarefa é marcado como |
results | Resultados do reconhecimento das subtarefas. |
subtask_status | Status da subtarefa. Um dos quatro estados: |
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 |
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 | A mensagem de erro. Combine-a com o campo |
task_id | ID da tarefa. |
task_status | Status da tarefa. Um dos quatro estados: Quando uma tarefa contém várias subtarefas, o status geral da tarefa é marcado como |
results | Resultados do reconhecimento das subtarefas. |
subtask_status | Status da subtarefa. Um dos quatro estados: |
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 |
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étodo | Assinatura | Descrição |
|---|---|---|
async_call | | Envia uma tarefa de reconhecimento de fala de forma assíncrona. |
wait | | Bloqueia a thread atual até que a tarefa assíncrona termine (o status da tarefa é Este método retorna um TranscriptionResponse. |
fetch | | 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.
- Coloque o arquivo de áudio em um diretório designado no servidor (como
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.
- Após o upload do arquivo, o sistema gera automaticamente uma URL de acesso público (geralmente no formato
-
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).
- A URL de acesso geralmente é 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 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
curlou 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