Cette rubrique détaille les paramètres et l'API du SDK Java pour la reconnaissance vocale hors temps réel Qwen-Audio-3.0-ASR-Flash-Filetrans/Fun-ASR.
Guide d'utilisation :Reconnaissance vocale hors temps réel. Pour les exigences d'entrée (formats audio pris en charge, limites de taille de fichier et de durée), consultez Spécifications audio.
Prérequis
Vous avez activé le service et obtenu une clé API. Veuillez configurer la clé API comme variable d'environnement plutôt que de la coder en dur, afin d'éviter les risques de sécurité liés à une fuite de code.
RemarquePour accorder un accès temporaire à des applications tierces ou à des utilisateurs, ou pour contrôler strictement des opérations sensibles (accès ou suppression de données confidentielles), nous recommandons d'utiliser des jetons d'authentification temporaires.
Contrairement aux clés API permanentes, les jetons d'authentification temporaires ont une durée de validité courte (60 secondes) et offrent une sécurité accrue. Ils conviennent aux scénarios d'appels temporaires et réduisent efficacement le risque de fuite de clé API.
Utilisation : dans votre code, remplacez la clé API initialement utilisée pour l'authentification par le jeton d'authentification temporaire obtenu.
Démarrage rapide
La classe principale (Transcription) fournit des interfaces pour soumettre une tâche de manière asynchrone, attendre sa fin de façon synchrone et interroger son résultat de manière asynchrone. Vous pouvez exécuter la reconnaissance vocale hors temps réel selon l'une des deux méthodes suivantes :
- Soumission asynchrone avec attente synchrone : après la soumission d'une tâche, le thread actuel se bloque jusqu'à ce que la tâche soit terminée et que le résultat de reconnaissance soit retourné.
- Soumission asynchrone avec interrogation asynchrone : après la soumission d'une tâche, appelez l'interface d'interrogation pour obtenir le résultat quand vous le souhaitez.
Soumettre une tâche de manière asynchrone et attendre sa fin de façon synchrone
-
Configurez les paramètres de requête.
-
Instanciez la classe principale (Transcription).
-
Appelez la méthode
asyncCallde la classe principale (Transcription) pour soumettre la tâche de manière asynchrone.Remarque
- Le service de transcription de fichiers traite les tâches soumises via l'API au mieux de ses capacités. Une fois soumise, une tâche passe à l'état mis en file d'attente (
PENDING). Le temps d'attente dépend de la longueur de la file et de la durée du fichier ; il ne peut donc pas être déterminé avec précision, mais reste généralement inférieur à quelques minutes. Dès que le traitement commence, la reconnaissance vocale s'effectue à une vitesse des centaines de fois supérieure au temps réel. - Une fois chaque tâche terminée, le résultat de reconnaissance et l'URL de téléchargement restent valides pendant 24 heures. Passé ce délai, vous ne pouvez plus interroger la tâche ni télécharger le résultat via l'URL retournée lors d'une requête précédente.
- Le service de transcription de fichiers traite les tâches soumises via l'API au mieux de ses capacités. Une fois soumise, une tâche passe à l'état mis en file d'attente (
-
Appelez la méthode
waitde la classe principale (Transcription) pour attendre la fin de la tâche de manière synchrone.Une tâche peut se trouver dans l'état
PENDING,RUNNING,SUCCEEDEDouFAILED. Tant que la tâche est dans l'étatPENDINGouRUNNING, l'interfacewaitreste bloquante. Lorsque la tâche atteint l'étatSUCCEEDEDouFAILED, l'interfacewaitcesse de bloquer et retourne le résultat de la tâche.waitretourne un résultat de tâche (TranscriptionResult).
Cliquez pour voir l'exemple complet
import com.alibaba.dashscope.audio.asr.transcription.*;
import com.alibaba.dashscope.utils.Constants;
import com.google.gson.*;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// The following is the configuration for the Singapore region. When calling, replace "{WorkspaceId}" with your actual workspace ID. Configurations differ across regions.
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
// Create the transcription request parameters
TranscriptionParam param =
TranscriptionParam.builder()
// 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: .apiKey("sk-xxx")
//.apiKey("apikey")
.model("qwen-audio-3.0-asr-flash-filetrans") // This uses qwen-audio-3.0-asr-flash-filetrans as an example; change the model name as needed. Model list: https://www.alibabacloud.com/help/zh/model-studio/models
.fileUrls(
Arrays.asList(
"{YOUR_AUDIO_URL}"))
.build();
try {
Transcription transcription = new Transcription();
// Submit the transcription request
TranscriptionResult result = transcription.asyncCall(param);
System.out.println("RequestId: " + result.getRequestId());
// Block and wait for the task to complete, then get the result
result = transcription.wait(
TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
// Print the result
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(result.getOutput()));
} catch (Exception e) {
System.out.println("error: " + e);
}
System.exit(0);
}
}
Soumettre une tâche de manière asynchrone et interroger le résultat de manière asynchrone
-
Configurez les paramètres de requête.
-
Instanciez la classe principale (Transcription).
-
Appelez la méthode
asyncCallde la classe principale (Transcription) pour soumettre la tâche de manière asynchrone.Remarque
- Le service de transcription de fichiers traite les tâches soumises via l'API au mieux de ses capacités. Une fois soumise, une tâche passe à l'état mis en file d'attente (
PENDING). Le temps d'attente dépend de la longueur de la file et de la durée du fichier ; il ne peut donc pas être déterminé avec précision, mais reste généralement inférieur à quelques minutes. Dès que le traitement commence, la reconnaissance vocale s'effectue à une vitesse des centaines de fois supérieure au temps réel. - Une fois chaque tâche terminée, le résultat de reconnaissance et l'URL de téléchargement restent valides pendant 24 heures. Passé ce délai, vous ne pouvez plus interroger la tâche ni télécharger le résultat via l'URL retournée lors d'une requête précédente.
- Le service de transcription de fichiers traite les tâches soumises via l'API au mieux de ses capacités. Une fois soumise, une tâche passe à l'état mis en file d'attente (
-
Appelez la méthode
fetchde la classe principale (Transcription) dans une boucle jusqu'à l'obtention du résultat final de la tâche.Lorsque l'état de la tâche est
SUCCEEDEDouFAILED, arrêtez l'interrogation et traitez le résultat.fetchretourne un résultat de tâche (TranscriptionResult).
Cliquez pour voir l'exemple complet
import com.alibaba.dashscope.audio.asr.transcription.*;
import com.alibaba.dashscope.common.TaskStatus;
import com.alibaba.dashscope.utils.Constants;
import com.google.gson.*;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// The following is the configuration for the Singapore region. When calling, replace "{WorkspaceId}" with your actual workspace ID. Configurations differ across regions.
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
// Create the transcription request parameters
TranscriptionParam param =
TranscriptionParam.builder()
// 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: .apiKey("sk-xxx")
//.apiKey("apikey")
.model("qwen-audio-3.0-asr-flash-filetrans") // This uses qwen-audio-3.0-asr-flash-filetrans as an example; change the model name as needed. Model list: https://www.alibabacloud.com/help/zh/model-studio/models
.fileUrls(
Arrays.asList(
"{YOUR_AUDIO_URL}"))
.build();
try {
Transcription transcription = new Transcription();
// Submit the transcription request
TranscriptionResult result = transcription.asyncCall(param);
System.out.println("RequestId: " + result.getRequestId());
// Poll for the task result in a loop until the task finishes
while (true) {
result = transcription.fetch(TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
if (result.getTaskStatus() == TaskStatus.SUCCEEDED || result.getTaskStatus() == TaskStatus.FAILED) {
break;
}
Thread.sleep(1000);
}
// Print the result
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(result.getOutput()));
} catch (Exception e) {
System.out.println("error: " + e);
}
System.exit(0);
}
}
Endpoints
Par défaut, le SDK utilise l'endpoint de la région Chine (Pékin). Pour basculer vers une autre région, modifiez Constants.baseHttpApiUrl avant l'initialisation.
Singapour
https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1
Lors de l'appel, remplacez {WorkspaceId} par votre véritable ID d'espace de travail.
Chine (Pékin)
https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1
Lors de l'appel, remplacez {WorkspaceId} par votre véritable ID d'espace de travail.
ImportantAlibaba Cloud Model Studio a publié des domaines spécifiques aux espaces de travail pour les régions Chine (Pékin) et Singapour. Ces nouveaux domaines dédiés offrent des performances supérieures et une stabilité accrue pour les requêtes d'inférence. Nous recommandons de migrer vers ces nouveaux domaines :
- Chine (Pékin) : de
dashscope.aliyuncs.comvers{WorkspaceId}.cn-beijing.maas.aliyuncs.com - Singapour : de
dashscope-intl.aliyuncs.comvers{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
Remplacez {WorkspaceId} par votre véritable ID d'espace de travail. Les domaines existants restent pleinement fonctionnels.
Basculer vers la région Singapour :
import com.alibaba.dashscope.utils.Constants;
// Set this at the beginning of your code
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
Remarque :
- Les clés API diffèrent selon les régions. Assurez-vous d'utiliser la clé API correspondant à la région cible.
- Le paramètre de région est global et affecte les appels API de tous les SDK DashScope.
Paramètres de requête
Configurez les paramètres de requête à l'aide des méthodes chaînées de TranscriptionParam.
Cliquez pour voir l'exemple
TranscriptionParam param = TranscriptionParam.builder()
.model("qwen-audio-3.0-asr-flash-filetrans")
.fileUrls(
Arrays.asList(
"{YOUR_AUDIO_URL}"))
.build();
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
model | String | Oui | Nom du modèle. Les valeurs prises en charge incluent les familles de modèles Qwen-Audio-3.0-ASR-Flash-Filetrans et Fun-ASR. Pour plus de détails, consultez Modèles et régions pris en charge. |
fileUrls | List<String> | Oui | Liste des URL des fichiers audio ou vidéo à transcrire. HTTP et HTTPS sont pris en charge. Une seule requête ne prend en charge qu'une seule URL. Pour les exigences d'entrée telles que les formats audio pris en charge, les limites de taille de fichier et les limites de durée, consultez Spécifications audio. Si l'enregistrement est stocké dans Alibaba Cloud OSS, l'API RESTful prend en charge les URL temporaires préfixées par Important
|
vocabularyId | String | Non | ID d'une liste de mots chauds précompilée. Générez cet ID au préalable en appelant l'API de création de liste de mots chauds. Transmettez l'ID lors de la reconnaissance pour utiliser les mots chauds de la liste. Convient aux scénarios où le vocabulaire est connu et relativement stable, et où vous devez réutiliser la même liste de mots entre plusieurs requêtes. Pour plus de détails sur l'utilisation, consultez Mots chauds précompilés. |
vocabulary | Map<String, Integer> | Non | Mots chauds instantanés. Transmis sous forme de paires clé-valeur, où la clé est le texte du mot chaud ( Convient à l'optimisation temporaire des mots chauds au niveau de la session. Lorsqu'ils sont configurés conjointement avec des mots chauds précompilés, seuls les mots chauds instantanés prennent effet. Pour plus de détails sur l'utilisation, consultez Mots chauds instantanés. ImportantSeul RemarqueDéfinissez |
channelId | List<Integer> | Non | Index des pistes audio à reconnaître dans un fichier audio multipiste. L'index commence à 0. Par exemple, [0] reconnaît la première piste, et [0, 1] reconnaît simultanément les première et deuxième pistes. Si vous omettez ce paramètre, seule la première piste est traitée. ImportantChaque piste spécifiée est facturée indépendamment. Par exemple, demander [0, 1] pour un seul fichier entraîne deux facturations distinctes. Valeur par défaut : [0]. |
specialWordFilter | String | Non | Mots sensibles à traiter lors de la reconnaissance vocale. Vous pouvez définir une méthode de gestion différente pour chaque mot sensible. Pour plus de détails, consultez Filtrage des mots sensibles. |
diarizationEnabled | Boolean | Non | Indique s'il faut activer la diarisation des locuteurs. Désactivé par défaut. S'applique uniquement à l'audio mono. L'audio multicanal ne prend pas en charge la diarisation des locuteurs. Lorsque cette option est activée, le résultat de reconnaissance inclut un champ RemarqueLorsque la diarisation des locuteurs est activée, maintenez la durée audio en dessous de 2 heures. Sinon, la reconnaissance peut échouer ou expirer. Valeur par défaut : false. Pour un exemple de |
speakerCount | Integer | Non | ImportantPrend effet uniquement lorsque la diarisation des locuteurs est activée ( Valeur de référence pour le nombre de locuteurs. La plage valide est un entier de 2 à 100 (inclus). Par défaut, le nombre de locuteurs est détecté automatiquement. Si vous définissez cette valeur, elle guide simplement l'algorithme pour produire le nombre spécifié lorsque cela est possible, sans garantir ce compte exact. Aucune valeur par défaut. |
language_hints | String[] | Non | Codes de langue à reconnaître. Si vous ne pouvez pas déterminer la langue à l'avance, laissez ce champ vide et le modèle détectera la langue automatiquement. Pour les modèles Qwen-Audio-3.0-ASR-Flash-Filetrans, vous pouvez définir jusqu'à 4 valeurs ; toute valeur au-delà des 4 premières est ignorée. Pour les modèles Fun-ASR, vous ne pouvez définir qu'une seule valeur ; si vous en définissez plusieurs, seule la première prend effet. Cliquez pour voir les codes de langue pris en charge
RemarqueDéfinissez |
apiKey | String | Non | Votre clé API. Si vous avez configuré la clé API comme variable d'environnement, vous n'avez pas besoin de la définir dans votre code. Dans le cas contraire, vous devez la définir dans votre code. |
Réponse
Résultat de tâche (TranscriptionResult)
TranscriptionResult encapsule le résultat de la tâche actuelle.
| Interface/Méthode | Paramètre | Valeur de retour | Description |
|---|---|---|---|
| Aucun | requestId | Obtient le requestId. |
| Aucun | taskId | Obtient le taskId. |
| Aucun |
| Obtient l'état de la tâche.
RemarqueLorsqu'une tâche contient plusieurs sous-tâches, l'état global de la tâche est marqué comme |
| Aucun | Obtient le résultat de sous-tâche (TranscriptionTaskResult). Chaque tâche reconnaît un ou plusieurs fichiers audio. Les différents fichiers audio sont traités dans des sous-tâches distinctes ; chaque tâche correspond donc à une ou plusieurs sous-tâches. | |
| Aucun | Le résultat de la tâche, au format JSON | Obtient le résultat de la tâche. Le résultat est constitué de données au format JSON. Si vous souhaitez obtenir le résultat de la tâche via l'interface Cliquez pour voir l'exemple JSON Exemple de succès Exemple d'erreur« |
Résultat de sous-tâche (TranscriptionTaskResult)
TranscriptionTaskResult encapsule le résultat d'une sous-tâche. Une sous-tâche reconnaît un seul fichier audio.
| Interface/Méthode | Paramètre | Valeur de retour | Description |
|---|---|---|---|
| Aucun | URL du fichier audio reconnu | Obtient l'URL du fichier audio reconnu. |
| Aucun | URL du résultat de reconnaissance | Obtient l'URL du résultat de reconnaissance. Cette URL est valide pendant 24 heures. Une fois expirée, vous ne pouvez plus interroger la tâche ni télécharger le résultat via l'URL retournée lors d'une requête précédente. Le résultat de reconnaissance est enregistré sous forme de fichier JSON. Vous pouvez télécharger le fichier via l'URL ou lire directement son contenu via une requête HTTP. Pour la signification de chaque champ dans les données JSON, consultez Description du résultat de reconnaissance. |
| Aucun |
| Obtient l'état de la sous-tâche.
|
| Aucun | Informations clés générées lors de l'exécution de la tâche, pouvant être vides | Obtient les informations clés générées lors de l'exécution de la tâche. En cas d'échec d'une tâche, vérifiez ce contenu pour en analyser la cause. |
Description du résultat de reconnaissance
Le résultat de reconnaissance est enregistré sous forme de fichier JSON.
Cliquez pour voir l'exemple de résultat de reconnaissance
{
"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
]
}
]
}
]
}
Les paramètres suivants méritent une attention particulière :
Paramètre | Type | Description |
|---|---|---|
audio_format | string | Format audio du fichier source. |
channels | array[integer] | Index de piste de l'audio dans le fichier source. Pour un audio monopiste, [0] est retourné ; pour un audio bipiste, [0, 1] est retourné, et ainsi de suite. |
original_sampling_rate | integer | Taux d'échantillonnage (Hz) de l'audio dans le fichier source. |
original_duration_in_milliseconds | integer | Durée audio originale (ms) dans le fichier source. |
channel_id | integer | Index de piste du résultat de transcription, commençant à 0. |
content_duration | integer | Durée (ms) du contenu de la piste identifié comme parole. Le service de modèle de reconnaissance vocale transcrit uniquement le contenu d'une piste identifié comme parole, et facture en fonction de cette durée. Le contenu non vocal n'est ni mesuré ni facturé. En règle générale, la durée du contenu vocal est inférieure à la durée audio originale. Étant donné que la présence de contenu vocal est déterminée par un modèle d'IA, le résultat peut différer légèrement de la situation réelle. |
transcript | string | Résultat de transcription au niveau du paragraphe. |
sentences | array | Résultat de transcription au niveau de la phrase. |
words | array | Résultat de transcription au niveau du mot. |
begin_time | integer | Horodatage de début (ms). |
end_time | integer | Horodatage de fin (ms). |
text | string | Résultat de transcription. |
speaker_id | integer | Index du locuteur actuel, commençant à 0, utilisé pour distinguer les différents locuteurs. Ce champ n'apparaît dans le résultat de reconnaissance que si la diarisation des locuteurs est activée. |
punctuation | string | Ponctuation prédite après le mot, le cas échéant. |
Interfaces clés
Classe de paramètres d'interrogation de tâche (TranscriptionQueryParam)
TranscriptionQueryParam est utilisé lors de l'attente de la fin d'une tâche (appel de la méthode wait de Transcription) ou de l'interrogation du résultat de la tâche (appel de la méthode fetch de Transcription).
Créez une instance TranscriptionQueryParam via la méthode statique FromTranscriptionParam.
Afficher l'exemple
// Build the transcription request parameters
TranscriptionParam param =
TranscriptionParam.builder()
// If you have not set the API key as an environment variable, replace apiKey with your own API key
//.apiKey("apikey")
.model("qwen-audio-3.0-asr-flash-filetrans")
.fileUrls(
Arrays.asList(
"{YOUR_AUDIO_URL}"))
.build();
try {
Transcription transcription = new Transcription();
// Submit the transcription request
TranscriptionResult result = transcription.asyncCall(param);
System.out.println("RequestId: " + result.getRequestId());
TranscriptionQueryParam queryParam = TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId());
} catch (Exception e) {
System.out.println("error: " + e);
}
| Interface/méthode | Paramètres | Valeur de retour | Description |
|---|---|---|---|
|
| une instance | Crée une instance |
Classe principale (Transcription)
Importez Transcription avec « import com.alibaba.dashscope.audio.asr.transcription.*; ». Ses interfaces clés sont les suivantes :
| Interface/méthode | Paramètres | Valeur de retour | Description |
|---|---|---|---|
|
| Soumet une tâche de reconnaissance vocale de manière asynchrone. | |
|
| Bloque le thread actuel jusqu'à la fin de la tâche asynchrone (l'état de la tâche est | |
|
| Interroge le résultat de la tâche actuelle de manière asynchrone. |
Codes d'erreur
Si vous rencontrez une erreur, consultez les codes d'erreur pour résoudre le problème.
Lorsqu'une tâche contient plusieurs sous-tâches, l'état global de la tâche est marqué comme SUCCEEDED dès qu'au moins une sous-tâche réussit. Vérifiez le champ subtask_status pour déterminer le résultat de chaque sous-tâche.
Exemple de réponse d'erreur :
{
"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
Fonctionnalités
Q : L'audio encodé en Base64 est-il pris en charge ?
L'audio encodé en Base64 n'est pas pris en charge. Seul l'audio accessible via une URL publique peut être reconnu. Les flux binaires et les fichiers locaux ne peuvent pas être reconnus directement.
Q : Comment rendre un fichier audio disponible via une URL accessible publiquement ?
Les étapes typiques sont les suivantes. Il s'agit d'une approche parmi d'autres ; le processus exact varie selon le produit de stockage. Nous vous recommandons de télécharger l'audio vers Alibaba Cloud OSS :
1. Choisir une méthode de stockage et d'hébergement
Par exemple :
-
Service de stockage objet (recommandé) :
- Utilisez le service de stockage objet d'un fournisseur cloud (tel qu'Alibaba Cloud OSS) pour télécharger le fichier audio dans un bucket et le configurer en accès public.
- Avantages : haute disponibilité, prise en charge de l'accélération CDN et gestion simplifiée.
-
Serveur web :
- Placez le fichier audio sur un serveur web prenant en charge l'accès HTTP/HTTPS (tel que Nginx ou Apache).
- Avantages : convient aux petits projets ou aux tests locaux.
-
Réseau de diffusion de contenu (CDN) :
- Hébergez le fichier audio sur un CDN et accédez-y via l'URL fournie par le CDN.
- Avantages : accélère la distribution des fichiers et convient aux scénarios à forte concurrence.
2. Télécharger le fichier audio
Téléchargez l'audio selon la méthode de stockage ou d'hébergement choisie. Par exemple :
-
Service de stockage objet :
- Connectez-vous à la console du fournisseur cloud et créez un bucket.
- Téléchargez le fichier audio et définissez son autorisation sur lecture publique ou générez un lien d'accès temporaire.
-
Serveur web :
- Placez le fichier audio dans un répertoire dédié sur le serveur (tel que
/var/www/html/audio/). - Assurez-vous que le fichier est accessible via HTTP/HTTPS.
- Placez le fichier audio dans un répertoire dédié sur le serveur (tel que
3. Générer une URL accessible publiquement
Par exemple :
-
Service de stockage objet :
- Après le téléchargement du fichier, le système génère automatiquement une URL d'accès public (généralement au format
https://<bucket-name>.<region>.aliyuncs.com/<file-name>). - Pour un nom de domaine plus convivial, liez un domaine personnalisé et activez HTTPS.
- Après le téléchargement du fichier, le système génère automatiquement une URL d'accès public (généralement au format
-
Serveur web :
- L'URL d'accès correspond généralement à l'adresse du serveur suivie du chemin du fichier (comme
https://your-domain.com/audio/file.mp3).
- L'URL d'accès correspond généralement à l'adresse du serveur suivie du chemin du fichier (comme
-
CDN :
- Après avoir configuré l'accélération CDN, utilisez l'URL fournie par le CDN (telle que
https://cdn.your-domain.com/audio/file.mp3).
- Après avoir configuré l'accélération CDN, utilisez l'URL fournie par le CDN (telle que
4. Vérifier que l'URL fonctionne
Assurez-vous que l'URL générée est accessible sur le réseau public. Par exemple :
- Ouvrez l'URL dans un navigateur et vérifiez si le fichier audio se lit.
- Utilisez un outil (tel que
curlou Postman) pour vérifier que l'URL retourne la réponse HTTP correcte (code d'état 200).
Lors de l'utilisation du SDK, si les fichiers audio sont stockés dans Alibaba Cloud OSS, les URL temporaires avec le préfixe oss:// ne sont pas prises en charge.
Lors de l'utilisation de l'API RESTful, si les fichiers audio sont stockés dans Alibaba Cloud OSS, les URL temporaires avec le préfixe oss:// sont prises en charge :
- L'URL temporaire est valide pendant 48 heures et ne peut plus être utilisée après expiration. Ne l'utilisez pas dans un environnement de production.
- L'API pour obtenir un identifiant de téléchargement est limitée à 100 QPS et ne prend pas en charge la mise à l'échelle. Ne l'utilisez pas dans des environnements de production, des scénarios à haute concurrence ou des scénarios de test de charge.
- Pour les environnements de production, utilisez un service de stockage stable tel qu'OSS pour garantir la disponibilité à long terme des fichiers et éviter les problèmes de limitation de débit.
Q : Combien de temps faut-il pour obtenir le résultat de reconnaissance ?
Une fois une tâche soumise, elle passe à l'état mis en file d'attente (PENDING). Le temps d'attente dépend de la longueur de la file et de la durée de l'audio ; il ne peut donc pas être déterminé exactement, mais reste généralement inférieur à quelques minutes. En règle générale, plus l'audio est long, plus le traitement prend du temps.
Dépannage
Si votre code retourne une erreur, résolvez le problème en vous basant sur les informations contenues dans les codes d'erreur.
Q : L'interrogation ne retourne jamais de résultat ?
Cela peut être dû à une limitation de débit. Patientez un instant et réessayez.
Q : Pourquoi la parole n'est-elle pas reconnue (aucun résultat de reconnaissance) ?
Vérifiez que le format audio et le taux d'échantillonnage sont corrects et respectent les contraintes des paramètres.
Utilisez l'outil ffprobe pour obtenir le conteneur audio, le codec, le taux d'échantillonnage, les canaux et d'autres détails :
ffprobe -v error -show_entries format=format_name -show_entries stream=codec_name,sample_rate,channels -of default=noprint_wrappers=1 input.xxx