Google Cloud Speech API をPHPで利用するためには、まずGoogle Cloud Platform (GCP) のプロジェクトを作成し、Speech-to-Text APIを有効にする必要があります。また、適切なサービスアカウントを作成し、その認証情報をダウンロードする必要があります。以下は、Google Cloud Speech APIをPHPで使用するための基本的な手順とサンプルコードです。
ステップ 1: GCP の設定
- Google Cloud Platform のコンソールにログインします。
- 新しいプロジェクトを作成し、選択します。
- 「APIとサービス」>「ライブラリ」から Speech-to-Text API を検索し、有効にします。
- 「APIとサービス」>「認証情報」で新しいサービスアカウントを作成します。
- サービスアカウントに対して新しい秘密鍵を作成し、JSON形式でダウンロードします。
ステップ 2: PHP クライアントライブラリのインストール
Google Cloud Speech APIのPHPクライアントライブラリを使用するために、Composerを使用してインストールします。以下のコマンドを実行します。
composer require google/cloud-speech
ステップ 3: PHP での Speech API の使用
以下は、ローカルの音声ファイルをGoogle Cloud Speech APIに送信し、テキストに変換するPHPスクリプトの例です。
require 'vendor/autoload.php';
use Google\Cloud\Speech\V1\SpeechClient;
use Google\Cloud\Speech\V1\RecognitionConfig\AudioEncoding;
// サービスアカウントの秘密鍵ファイルのパス
putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/service-account-file.json');
// クライアントのインスタンスを作成
$speechClient = new SpeechClient();
// 音声ファイルの設定
$audioFile = fopen('/path/to/your/audiofile.wav', 'r');
$content = fread($audioFile, filesize('/path/to/your/audiofile.wav'));
fclose($audioFile);
// 設定の構成
$config = (new RecognitionConfig())
->setEncoding(AudioEncoding::LINEAR16)
->setSampleRateHertz(16000)
->setLanguageCode('en-US');
// 音声の認識
$audio = (new RecognitionAudio())->setContent($content);
$response = $speechClient->recognize($config, $audio);
// 結果の表示
foreach ($response->getResults() as $result) {
$alternatives = $result->getAlternatives();
$mostLikely = $alternatives[0];
printf('Transcript: %s' . PHP_EOL, $mostLikely->getTranscript());
}
// リソースの解放
$speechClient->close();
このコードは、指定された音声ファイルを読み込み、Google Cloud Speech APIを使用してテキストに変換し、結果を出力します。サービスアカウントの秘密鍵ファイルのパスと、変換したい音声ファイルのパスを適切に設定してください。
これらの手順に従うことで、PHPを使用してGoogle Cloud Speech APIにアクセスし、音声認識機能を実装することができます。
Webアプリケーションに音声入力の機能を組み込む
Webアプリケーションに音声入力の機能を組み込む場合、ユーザーが音声を録音し、その音声データをサーバーに送信するためのインターフェースが必要です。これには、HTMLとJavaScriptを使用して音声録音ボタンやフォームを作成し、録音された音声をサーバーに送信する機能を実装します。サーバー側では、PHPを使用して受け取った音声データを処理し、必要に応じてGoogle Cloud Speech APIに送信してテキストに変換します。
以下は、音声を録音し、サーバーに送信するための基本的なHTMLとJavaScriptの例です。この例では、MediaRecorder
APIを使用してブラウザで音声を録音します。録音された音声は、BlobとしてPHPスクリプトに送信されます。
HTML
<!DOCTYPE html>
<html>
<head>
<title>音声録音と送信</title>
</head>
<body>
<button id="startRecord">録音開始</button>
<button id="stopRecord" disabled>録音停止</button>
<form id="audioForm" method="post" enctype="multipart/form-data">
<input type="hidden" name="audioData" id="audioData">
<input type="submit" value="送信">
</form>
<script src="record.js"></script>
</body>
</html>
JavaScript (record.js
)
let mediaRecorder;
let audioChunks = [];
document.getElementById("startRecord").onclick = function() {
navigator.mediaDevices.getUserMedia({ audio: true })
.then(stream => {
mediaRecorder = new MediaRecorder(stream);
mediaRecorder.start();
mediaRecorder.ondataavailable = function(event) {
audioChunks.push(event.data);
};
mediaRecorder.onstop = function() {
const audioBlob = new Blob(audioChunks, { 'type' : 'audio/wav; codecs=opus' });
const formData = new FormData();
formData.append("audioFile", audioBlob, "recording.wav");
fetch("upload.php", { method: "POST", body: formData })
.then(response => response.text())
.then(data => console.log(data))
.catch(error => console.error(error));
audioChunks = [];
};
document.getElementById("stopRecord").disabled = false;
});
};
document.getElementById("stopRecord").onclick = function() {
mediaRecorder.stop();
document.getElementById("stopRecord").disabled = true;
};
PHP (upload.php
)
<?php
if (isset($_FILES['audioFile']['tmp_name'])) {
$audioFilePath = "/path/to/save/" . $_FILES['audioFile']['name'];
// ファイルを保存
if (move_uploaded_file($_FILES['audioFile']['tmp_name'], $audioFilePath)) {
echo "ファイルが正常にアップロードされました。";
// ここでGoogle Cloud Speech APIを呼び出して音声をテキストに変換できます。
} else {
echo "ファイルのアップロードに失敗しました。";
}
} else {
echo "ファイルが送信されていません。";
}
このコードスニペットは、ブラウザでの音声録音と、録音された音声のサーバーへの送信の基本的な流れを示しています。実際のアプリケーションに組み込む際には、セキュリティ対策(例えば、ユーザー認証やHTTPSを通じた安全なデータ転送)を施すことが重要です。また、Google Cloud Speech APIへの音声データの送信と応答の処理は、上述したPHPコードの例を参考に実装できます。