php 实现语音识别
PHP 实现语音识别的方法
PHP 本身并不直接支持语音识别,但可以通过调用第三方 API 或结合其他工具实现。以下是几种常见的方法:
调用语音识别 API
使用成熟的语音识别服务(如 Google Speech-to-Text、Azure Speech Services 或阿里云语音识别)的 API。以下是示例代码:
<?php
$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' => 'zh-CN'
],
'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'];
?>
使用开源语音识别工具
通过 PHP 调用本地安装的开源语音识别工具(如 CMU Sphinx 或 Mozilla DeepSpeech)。需要先安装工具并确保 PHP 可以执行命令行操作:
<?php
$audioFile = 'path/to/audio.wav';
$output = shell_exec("pocketsphinx_continuous -infile {$audioFile} 2>&1");
echo $output;
?>
结合 FFmpeg 预处理音频
某些 API 对音频格式有要求,可以使用 FFmpeg 预处理音频文件:
<?php
$inputFile = 'path/to/input.mp3';
$outputFile = 'path/to/output.wav';
shell_exec("ffmpeg -i {$inputFile} -ar 16000 -ac 1 {$outputFile}");
?>
本地语音识别扩展
安装 PHP 扩展(如 php-vosk)实现本地语音识别。需要先下载 Vosk 模型并安装扩展:

<?php
$recognizer = new Vosk\Recognizer("model_path");
$stream = fopen('audio.wav', 'rb');
while (!feof($stream)) {
$data = fread($stream, 4096);
$result = $recognizer->acceptWaveform($data);
echo $recognizer->getResult();
}
?>
注意事项
- API 方法需要网络连接,且可能产生费用。
- 本地工具需要服务器支持音频处理和足够的计算资源。
- 确保音频格式符合要求(如采样率、编码格式等)。
- 中文识别需指定语言参数或使用中文模型。
以上方法可根据实际需求选择,API 方式适合快速集成,本地工具适合隐私要求高的场景。






