Maison >développement back-end >Problème PHP >Comment connecter le projet php au service vocal iFlytek (processus)
PHP est un langage de programmation largement utilisé qui peut être utilisé pour développer des applications Web, des pages Web dynamiques, des scripts de ligne de commande et diverses autres applications. À mesure que la technologie de l’intelligence artificielle continue de se développer, la technologie vocale est également largement utilisée. iFlytek Voice est une société qui fournit des services de technologie vocale. Elle peut fournir des interfaces fonctionnelles telles que la reconnaissance vocale et la synthèse vocale pour diverses applications. Cet article expliquera comment utiliser PHP pour accéder aux services vocaux iFlytek afin d'implémenter les fonctions de reconnaissance vocale et de synthèse vocale.
1. Inscrivez-vous à la plateforme ouverte iFlytek
Pour accéder aux services vocaux iFlytek, vous devez d'abord créer un compte sur la plateforme ouverte iFlytek, visitez le site Web https://www.xfyun.cn/ pour vous inscrire. Une fois l'enregistrement terminé, vous pouvez créer une application dans la console de la plateforme ouverte et obtenir les trois paramètres AppID, API Key et API Secret. Ces paramètres seront utilisés pour appeler l'API du service vocal iFlytek.
2. Interface de reconnaissance vocale
iFlytek Voice fournit une variété d'interfaces de reconnaissance vocale, notamment des interfaces de reconnaissance vocale en ligne, des interfaces de reconnaissance vocale hors ligne et des interfaces de reconnaissance vocale personnalisées. Avant d'utiliser l'interface de reconnaissance vocale, vous devez enregistrer la voix via un microphone ou un autre appareil d'enregistrement et convertir le format audio en un format audio répondant aux exigences de l'interface vocale iFlytek.
L'interface de reconnaissance vocale en ligne fait référence à la transmission du fichier audio enregistré au serveur vocal iFlytek, et le serveur effectue la reconnaissance vocale et renvoie le résultat de la reconnaissance. L'utilisation de cette interface nécessite au préalable une authentification et l'obtention d'un jeton d'accès. Voici l'exemple de code :
<?php $url = "https://api.xfyun.cn/v1/service/v1/iat"; //讯飞开放平台中应用的appID和appSecret $appid = "5*****9"; $apiKey = "4****************4e4e4ebc"; $apiSecret = "6cd**************************5ba"; //当前时间戳秒数 $ts = time(); //身份证号码(加密) $idCard = md5("123456789012345678"); //要转换的音频文件路径 $audioFilePath = "/path/audio.pcm"; if(!file_exists($audioFilePath)){ echo "文件不存在"; die; } //二进制方式打开文件 $audioFile = file_get_contents($audioFilePath); //对音频文件进行base64编码 $audioData = base64_encode($audioFile); //请求头 $header = array( "Content-Type:application/x-www-form-urlencoded; charset=utf-8", "X-Appid: ".$appid, "X-CurTime: ".$ts, "X-Param:eyJ0eXBlIjoic3lzdGVtIiwibmFtZSI6ImlhdCJ9", "X-CheckSum:".md5($apiKey.$ts.$idCard.$audioData.$apiSecret), ); //请求数据 $data = "audio=".$audioData."&engine_type=cloud"; //发送HTTP POST请求 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $output = curl_exec($ch); curl_close($ch); //解析结果 $result = json_decode($output, true); if($result && isset($result["data"])){ echo $result["data"]; }else{ echo "错误信息:".$output; } ?>
L'exemple de code utilise la bibliothèque curl pour envoyer une requête HTTP POST et convertir le fichier audio enregistré en flux binaire, puis l'encoder en base64 et le transmettre au serveur vocal iFlytek en tant que paramètre de requête. . Dans le même temps, ce code ajoute également le numéro d'identification (cryptage md5) en tant que paramètre et le transmet dans le champ de somme de contrôle de l'en-tête de la requête.
L'interface de reconnaissance vocale hors ligne fait référence à la correspondance et à la reconnaissance des fichiers audio enregistrés avec le modèle de reconnaissance hors ligne fourni par iFlytek Voice et au renvoi des résultats de reconnaissance. L'utilisation de cette interface nécessite de télécharger localement le modèle de reconnaissance hors ligne et de créer au préalable un fichier de grammaire.
Téléchargez le modèle de reconnaissance hors ligne
Allez sur le site officiel d'iFlytek pour télécharger le modèle de reconnaissance hors ligne de la langue correspondante, recherchez le module de dictée vocale dans la console de la plateforme ouverte, entrez dans la page des paramètres du module, copiez le lien de téléchargement du fichier modèle sur votre ordinateur local et décompressez-le.
Créer un fichier de grammaire
Vous devez spécifier un fichier de grammaire pour la reconnaissance vocale hors ligne. Le fichier de grammaire peut être au format JSGF (Java Speech Grammar Format) ou Bnf (Backus-Naur Form). Voici un exemple simple de fichier de syntaxe JSGF :
#JSGF V1.0; grammar sample; public <command> = 开灯 | 关灯 | 调亮度 | 调色温 | 播放音乐 | 暂停音乐 | 下一曲 | 上一曲 | 音量调大 | 音量调小;
Dans cet exemple, le fichier de syntaxe définit une commande, notamment allumer les lumières, éteindre les lumières, régler la luminosité, régler la température de couleur, jouer de la musique, mettre la musique en pause, la chanson suivante et précédent une chanson, augmenter le volume, diminuer le volume, etc. Pour les fichiers audio enregistrés, le système fera correspondre les commandes définies en fonction du fichier de grammaire pour obtenir une reconnaissance vocale hors ligne.
L'interface de reconnaissance vocale personnalisée permet aux utilisateurs de former des modèles en fonction de leurs propres ensembles de données, puis d'utiliser l'interface de reconnaissance vocale personnalisée fournie par iFlytek pour la reconnaissance. Avant d'utiliser l'interface de reconnaissance vocale personnalisée, vous devez d'abord télécharger et entraîner l'ensemble de données. Une fois la formation terminée, vous pouvez appeler l'interface de reconnaissance vocale. Le procédé d'appel d'interface est similaire à l'interface de reconnaissance vocale en ligne et ne sera pas décrit à nouveau.
3. Interface de synthèse vocale
L'interface de synthèse vocale permet de synthétiser le texte spécifié dans un fichier audio vocal et de renvoyer l'URL du fichier audio. L'utilisation de l'interface de synthèse vocale nécessite une authentification et l'obtention d'un jeton d'accès. Vient ensuite l'exemple de code :
<?php $url = "https://api.xfyun.cn/v1/service/v1/tts"; //讯飞开放平台中应用的appID和appSecret $appid = "5*****9"; $apiKey = "4****************4e4e4ebc"; $apiSecret = "6cd**************************5ba"; //要合成的文本内容 $text = "讯飞语音,智能语音,畅想未来"; //当前时间戳秒数 $ts = time(); //身份证号码(加密) $idCard = md5("123456789012345678"); //请求头 $header = array( "Content-Type:application/x-www-form-urlencoded; charset=utf-8", "X-Appid: ".$appid, "X-CurTime: ".$ts, "X-Param:eyJlbmdpbmVfdHlwZSI6IndlYiIsImRlc2NyaXB0aW9uIjoiMTAwLicipOyAgVGhpcyBtZXRob2Qgd29ya3MgY2FuIGhlYXBzaG90ICogZnJvbSB1c2VyICsgJyMxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjMn IiwiaXNzdWVkQ29kZSI6IjQ2MzkzIn0=", "X-CheckSum:".md5($apiKey.$ts.$idCard.$text.$apiSecret), ); //请求数据 $data = "text=".$text."&auf=audio/L16;rate=16000&voice_name=xiaoyan&engine_type=intp65&speed=50&volume=50&pitch=50"; //发送HTTP POST请求 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $output = curl_exec($ch); curl_close($ch); //解析结果 $result = json_decode($output, true); if($result && isset($result["data"])){ echo $result["data"]["url"]; }else{ echo "错误信息:".$output; } ?>
Cet exemple de code utilise la bibliothèque curl pour envoyer une requête HTTP POST et transmet le contenu texte à synthétiser en tant que paramètre de requête au serveur vocal iFlytek. Dans le même temps, le taux d'échantillonnage de la voix, le timbre, la vitesse de parole, le volume, la hauteur et d'autres paramètres sont également définis. Le résultat final est l’URL du fichier audio synthétisé.
IV.Résumé
Cet article présente comment utiliser PHP pour accéder aux services vocaux iFlytek, y compris le processus de mise en œuvre de l'interface de reconnaissance vocale en ligne, de l'interface de reconnaissance vocale hors ligne et de l'interface de synthèse vocale. Les développeurs peuvent choisir les interfaces de développement appropriées en fonction de leurs besoins afin d'ajouter la prise en charge de la technologie vocale à leurs applications.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!