php 实现语音识别
PHP 实现语音识别的方法
PHP 本身不直接支持语音识别功能,但可以通过调用第三方 API 或结合其他工具实现。以下是几种常见的方法:
调用语音识别 API
Google Cloud Speech-to-Text、Azure Cognitive Services 或 IBM Watson 等平台提供语音识别 API。PHP 可以通过 HTTP 请求调用这些 API。
$audioFile = 'path/to/audio.wav';
$apiKey = 'YOUR_API_KEY';
$url = 'https://speech.googleapis.com/v1/speech:recognize?key=' . $apiKey;
$audioContent = base64_encode(file_get_contents($audioFile));
$data = [
'config' => [
'encoding' => 'LINEAR16',
'sampleRateHertz' => 16000,
'languageCode' => 'en-US'
],
'audio' => [
'content' => $audioContent
]
];
$options = [
'http' => [
'header' => "Content-type: application/json\r\n",
'method' => 'POST',
'content' => json_encode($data)
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
$response = json_decode($result, true);
echo $response['results'][0]['alternatives'][0]['transcript'];
使用本地语音识别工具
结合 CMU Sphinx 或 Kaldi 等开源工具,PHP 可以通过命令行调用这些工具处理音频文件。
$audioFile = 'path/to/audio.wav';
$outputFile = 'path/to/output.txt';
$command = "pocketsphinx_continuous -infile {$audioFile} > {$outputFile}";
exec($command, $output, $returnCode);
if ($returnCode === 0) {
$transcript = file_get_contents($outputFile);
echo $transcript;
} else {
echo "Error processing audio file.";
}
前端录音 + 后端处理
通过前端 JavaScript 录制音频并上传到 PHP 后端处理。
前端 JavaScript 代码示例:
navigator.mediaDevices.getUserMedia({ audio: true })
.then(stream => {
const mediaRecorder = new MediaRecorder(stream);
mediaRecorder.start();
let audioChunks = [];
mediaRecorder.addEventListener("dataavailable", event => {
audioChunks.push(event.data);
});
mediaRecorder.addEventListener("stop", () => {
const audioBlob = new Blob(audioChunks, { type: 'audio/wav' });
const formData = new FormData();
formData.append('audio', audioBlob);
fetch('process_audio.php', {
method: 'POST',
body: formData
}).then(response => response.text())
.then(transcript => console.log(transcript));
});
setTimeout(() => mediaRecorder.stop(), 5000); // 5秒后停止
});
PHP 后端处理代码 (process_audio.php):
$audioFile = $_FILES['audio']['tmp_name'];
// 调用API或本地工具处理音频文件
// ...
使用 WebSocket 实时语音识别
对于实时语音识别,可以结合 WebSocket 和语音识别服务。
// 需要使用Ratchet或其他WebSocket库
// 客户端通过WebSocket发送音频数据
// 服务器端调用语音识别API处理
注意事项
- 语音识别API通常有使用限制和费用
- 本地语音识别工具需要服务器支持
- 实时识别对服务器性能要求较高
- 音频格式需要符合API或工具要求
- 考虑隐私和数据处理合规性
以上方法可根据具体需求选择,API调用方式最简单但可能有成本,本地工具更可控但配置复杂。







