PHP は、Web アプリケーション、動的 Web ページ、コマンド ライン スクリプト、その他のさまざまなアプリケーションの開発に使用できる、広く使用されているプログラミング言語です。人工知能技術の発展に伴い、音声技術も広く使用されるようになりました。 iFlytek Voice は音声技術サービスを提供する会社で、さまざまなアプリケーションに音声認識や音声合成などの機能インターフェイスを提供できます。この記事では、PHP を使用して iFlytek 音声サービスにアクセスし、音声認識および音声合成機能を実装する方法を紹介します。
1. iFlytek オープン プラットフォームに登録する
iFlytek 音声サービスにアクセスするには、まず iFlytek オープン プラットフォーム アカウントを登録し、Web サイト https://www.xfyun.cn/ にアクセスする必要があります。登録するために。登録が完了すると、オープン プラットフォーム コンソールでアプリケーションを作成し、iFlytek 音声サービス API を呼び出すために使用される AppID、API Key、API Secret の 3 つのパラメーターを取得できます。
2. 音声認識インターフェイス
iFlytek Voice は、オンライン音声認識インターフェイス、オフライン音声認識インターフェイス、カスタマイズされた音声認識インターフェイスなど、さまざまな音声認識インターフェイスを提供します。音声認識インターフェイスを使用する前に、マイクまたはその他の録音デバイスを通じて音声を録音し、そのオーディオ形式を iFlytek 音声インターフェイスの要件を満たすオーディオ形式に変換する必要があります。
オンライン音声認識インターフェイスとは、録音された音声ファイルを iFlytek 音声サーバーに渡すことを指し、サーバーは音声認識を実行して認識結果を返します。結果。このインターフェイスを使用するには、最初に認証を行ってアクセス トークンを取得する必要があります。以下はサンプル コードです:
<?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; } ?>
サンプル コードでは、curl ライブラリを使用して HTTP POST リクエストを送信し、録音されたオーディオ ファイルをバイナリ ストリームに変換し、それを Base64 エンコードしてリクエストとして iFlytek に送信します。パラメータ音声サーバー。同時に、このコードは ID 番号 (MD5 暗号化) をパラメーターとして追加し、リクエスト ヘッダーのチェックサム フィールドに渡します。
オフライン音声認識インターフェイスとは、録音された音声ファイルを iFlytek が提供するオフライン認識モデルと照合して認識し、認識結果を返すことを指します。 。このインターフェイスを使用するには、オフライン認識モデルをローカルにダウンロードし、事前に文法ファイルを作成する必要があります。
オフライン認識モデルのダウンロード
iFlytek 公式 Web サイトにアクセスして、対応する言語のオフライン認識モデルをダウンロードし、オープン プラットフォーム コンソールで音声ディクテーション モジュールを見つけ、モジュール設定ページに入り、モデル ファイルのダウンロード リンクをコピーする ローカル コンピューターに移動して解凍します。
文法ファイルの作成
オフライン音声認識用の文法ファイルを指定する必要があります。文法ファイルは、JSGF (Java Speech Grammar Format) 形式または Bnf (Backus-Naur Form) にすることができます。フォーマット。以下は、単純な JSGF 構文ファイルの例です。
#JSGF V1.0; grammar sample; public <command> = 开灯 | 关灯 | 调亮度 | 调色温 | 播放音乐 | 暂停音乐 | 下一曲 | 上一曲 | 音量调大 | 音量调小;
この例では、構文ファイルは、照明の点灯、照明の消灯、明るさの調整、色温度の調整、音楽の再生、音楽の一時停止などのコマンドを定義します。そして次 最初の曲、前の曲、音量を上げる、音量を下げるなど。録音された音声ファイルの場合、システムは文法ファイルに従って定義されたコマンドを照合し、オフライン音声認識を実現します。
カスタマイズされた音声認識インターフェイスを使用すると、ユーザーは独自のデータセットに基づいてモデルをトレーニングし、iFlytek が提供するカスタマイズされた音声認識インターフェイスを使用できます。識別する。カスタマイズされた音声認識インターフェイスを使用する前に、まずデータ セットをアップロードしてトレーニングする必要があります。トレーニングが完了したら、音声認識用のインターフェイスを呼び出すことができます。インターフェイスの呼び出し方法はオンライン音声認識インターフェイスと同様であるため、再度説明しません。
3. 音声合成インターフェイス
音声合成インターフェイスとは、指定されたテキストを音声オーディオ ファイルに合成し、オーディオ ファイルの URL を返すことを指します。音声合成インターフェースを使用するには、認証とアクセストークンの取得が必要です。次にサンプル コードです。
<?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; } ?>
このサンプル コードは、curl ライブラリを使用して HTTP POST リクエストを送信し、合成されるテキスト コンテンツをリクエスト パラメータとして iFlytek 音声サーバーに送信します。同時に音声のサンプリングレート、音色、話す速度、音量、ピッチなどのパラメータも設定します。最終的に返されるのは、合成されたオーディオ ファイルの URL です。
4. 概要
この記事では、オンライン音声認識インターフェイス、オフライン音声認識インターフェイス、音声合成インターフェイスの実装プロセスを含む、PHP を使用して iFlytek 音声サービスにアクセスする方法を紹介します。開発者は、アプリケーションに音声テクノロジーのサポートを追加するニーズに基づいて、開発に適切なインターフェイスを選択できます。
以上がPHPプロジェクトをiFlytek音声サービスに接続する方法(プロセス)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。