PHP ist eine weit verbreitete Programmiersprache, die zum Entwickeln von Webanwendungen, dynamischen Webseiten, Befehlszeilenskripts und verschiedenen anderen Anwendungen verwendet werden kann. Da sich die Technologie der künstlichen Intelligenz weiterentwickelt, ist auch die Sprachtechnologie weit verbreitet. iFlytek Voice ist ein Unternehmen, das Sprachtechnologiedienste anbietet. Es kann funktionale Schnittstellen wie Spracherkennung und Sprachsynthese für verschiedene Anwendungen bereitstellen. In diesem Artikel wird erläutert, wie Sie mit PHP auf iFlytek-Sprachdienste zugreifen und Spracherkennungs- und Sprachsynthesefunktionen implementieren.
1. Registrieren Sie sich für die iFlytek Open Platform.
Um auf die iFlytek-Sprachdienste zuzugreifen, müssen Sie zunächst ein iFlytek-Open-Platform-Konto registrieren. Besuchen Sie zur Registrierung die Website https://www.xfyun.cn/. Nachdem die Registrierung abgeschlossen ist, können Sie eine Anwendung in der offenen Plattformkonsole erstellen und die drei Parameter AppID, API-Schlüssel und API-Geheimnis abrufen. Diese Parameter werden zum Aufrufen der iFlytek-Sprachdienst-API verwendet.
2. Spracherkennungsschnittstelle
iFlytek Voice bietet eine Vielzahl von Spracherkennungsschnittstellen, darunter Online-Spracherkennungsschnittstellen, Offline-Spracherkennungsschnittstellen und benutzerdefinierte Spracherkennungsschnittstellen. Bevor Sie die Spracherkennungsschnittstelle verwenden, müssen Sie die Stimme über ein Mikrofon oder ein anderes Aufnahmegerät aufzeichnen und das Audioformat in ein Audioformat konvertieren, das den Anforderungen der iFlytek-Sprachschnittstelle entspricht.
Die Online-Spracherkennungsschnittstelle bezieht sich auf die Weiterleitung der aufgezeichneten Audiodatei an den iFlytek-Sprachserver, und der Server führt die Spracherkennung durch und gibt das Erkennungsergebnis zurück. Die Verwendung dieser Schnittstelle erfordert zunächst eine Authentifizierung und den Erhalt eines Zugriffstokens. Das Folgende ist der Beispielcode:
<?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; } ?>
Der Beispielcode verwendet die Curl-Bibliothek, um eine HTTP-POST-Anfrage zu senden und die aufgezeichnete Audiodatei in einen Binärstream zu konvertieren, sie dann mit Base64 zu kodieren und als Anforderungsparameter an den iFlytek-Sprachserver zu übertragen . Gleichzeitig fügt dieser Code auch die ID-Nummer (MD5-Verschlüsselung) als Parameter hinzu und übergibt sie an das Prüfsummenfeld des Anforderungsheaders.
Die Offline-Spracherkennungsschnittstelle bezieht sich auf den Abgleich und die Erkennung der aufgezeichneten Audiodateien mit dem von iFlytek Voice bereitgestellten Offline-Erkennungsmodell und die Rückgabe der Erkennungsergebnisse. Die Verwendung dieser Schnittstelle erfordert das lokale Herunterladen des Offline-Erkennungsmodells und das Erstellen einer Grammatikdatei im Voraus.
Laden Sie das Offline-Erkennungsmodell herunter
Gehen Sie zur offiziellen Website von iFlytek, um das Offline-Erkennungsmodell der entsprechenden Sprache herunterzuladen, suchen Sie das Sprachdiktiermodul in der Konsole der offenen Plattform, rufen Sie die Seite mit den Moduleinstellungen auf und kopieren Sie den Link zum Herunterladen der Modelldatei Laden Sie es auf Ihren lokalen Computer herunter und entpacken Sie es.
Erstellen Sie eine Grammatikdatei
Sie müssen eine Grammatikdatei für die Offline-Spracherkennung angeben. Die Grammatikdatei kann im JSGF-Format (Java Speech Grammar Format) oder im Bnf-Format (Backus-Naur-Form) vorliegen. Das Folgende ist ein einfaches Beispiel für eine JSGF-Syntaxdatei:
#JSGF V1.0; grammar sample; public <command> = 开灯 | 关灯 | 调亮度 | 调色温 | 播放音乐 | 暂停音乐 | 下一曲 | 上一曲 | 音量调大 | 音量调小;
In diesem Beispiel definiert die Syntaxdatei einen Befehl, einschließlich Einschalten von Lichtern, Ausschalten von Lichtern, Anpassen der Helligkeit, Anpassen der Farbtemperatur, Abspielen von Musik, Anhalten von Musik, Nächstes Lied usw Vorheriges Lied, Lautstärke erhöhen, Lautstärke verringern usw. Bei aufgezeichneten Audiodateien gleicht das System die definierten Befehle entsprechend der Grammatikdatei ab, um eine Offline-Spracherkennung zu erreichen.
Angepasste Spracherkennungsschnittstelle ermöglicht es Benutzern, Modelle basierend auf ihren eigenen Datensätzen zu trainieren und dann die von iFlytek bereitgestellte angepasste Spracherkennungsschnittstelle für die Erkennung zu verwenden. Bevor Sie die angepasste Spracherkennungsschnittstelle verwenden, müssen Sie zunächst den Datensatz hochladen und trainieren. Nach Abschluss des Trainings können Sie die Schnittstelle zur Spracherkennung aufrufen. Die Schnittstellenaufrufmethode ähnelt der Online-Spracherkennungsschnittstelle und wird nicht erneut beschrieben.
3. Sprachsyntheseschnittstelle
Die Sprachsyntheseschnittstelle bedeutet, den angegebenen Text in eine Sprachaudiodatei zu synthetisieren und die URL der Audiodatei zurückzugeben. Die Verwendung der Sprachsyntheseschnittstelle erfordert eine Authentifizierung und den Erhalt eines Zugriffstokens. Als nächstes folgt der Beispielcode:
<?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; } ?>
Dieser Beispielcode verwendet die Curl-Bibliothek zum Senden einer HTTP-POST-Anfrage und überträgt den zu synthetisierenden Textinhalt als Anforderungsparameter an den iFlytek-Sprachserver. Gleichzeitig werden auch die Sprachabtastrate, die Klangfarbe, die Sprechgeschwindigkeit, die Lautstärke, die Tonhöhe und andere Parameter eingestellt. Die endgültige Rückgabe ist die URL der synthetisierten Audiodatei.
IV. Zusammenfassung
In diesem Artikel wird erläutert, wie Sie mit PHP auf iFlytek-Sprachdienste zugreifen, einschließlich des Implementierungsprozesses der Online-Spracherkennungsschnittstelle, der Offline-Spracherkennungsschnittstelle und der Sprachsyntheseschnittstelle. Entwickler können je nach Bedarf geeignete Schnittstellen für die Entwicklung auswählen, um ihren Anwendungen Unterstützung für Sprachtechnologie hinzuzufügen.
Das obige ist der detaillierte Inhalt vonSo verbinden Sie ein PHP-Projekt mit dem iFlytek-Sprachdienst (Prozess). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!