ホームページ  >  記事  >  バックエンド開発  >  PHPプロジェクトをiFlytek音声サービスに接続する方法(プロセス)

PHPプロジェクトをiFlytek音声サービスに接続する方法(プロセス)

PHPz
PHPzオリジナル
2023-04-24 14:53:171405ブラウズ

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 音声インターフェイスの要件を満たすオーディオ形式に変換する必要があります。

  1. オンライン音声認識インターフェイス

オンライン音声認識インターフェイスとは、録音された音声ファイルを 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 暗号化) をパラメーターとして追加し、リクエスト ヘッダーのチェックサム フィールドに渡します。

  1. オフライン音声認識インターフェイス

オフライン音声認識インターフェイスとは、録音された音声ファイルを iFlytek が提供するオフライン認識モデルと照合して認識し、認識結果を返すことを指します。 。このインターフェイスを使用するには、オフライン認識モデルをローカルにダウンロードし、事前に文法ファイルを作成する必要があります。

オフライン認識モデルのダウンロード

iFlytek 公式 Web サイトにアクセスして、対応する言語のオフライン認識モデルをダウンロードし、オープン プラットフォーム コンソールで音声ディクテーション モジュールを見つけ、モジュール設定ページに入り、モデル ファイルのダウンロード リンクをコピーする ローカル コンピューターに移動して解凍します。

文法ファイルの作成

オフライン音声認識用の文法ファイルを指定する必要があります。文法ファイルは、JSGF (Java Speech Grammar Format) 形式または Bnf (Backus-Naur Form) にすることができます。フォーマット。以下は、単純な JSGF 構文ファイルの例です。

#JSGF V1.0;
grammar sample;
public <command> = 开灯 | 关灯 | 调亮度 | 调色温 | 播放音乐 | 暂停音乐 | 下一曲 | 上一曲 | 音量调大 | 音量调小;

この例では、構文ファイルは、照明の点灯、照明の消灯、明るさの調整、色温度の調整、音楽の再生、音楽の一時停止などのコマンドを定義します。そして次 最初の曲、前の曲、音量を上げる、音量を下げるなど。録音された音声ファイルの場合、システムは文法ファイルに従って定義されたコマンドを照合し、オフライン音声認識を実現します。

  1. カスタマイズされた音声認識インターフェイス

カスタマイズされた音声認識インターフェイスを使用すると、ユーザーは独自のデータセットに基づいてモデルをトレーニングし、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。