Laravel 8 (PHP) & Google 云语音 API:使用 REST 传输时不支持流式调用。)
Laravel 8 (PHP) & Google Cloud Speech API: Streaming calls are not supported while using the REST transport.)
Wassup 伙计们,
我已成功安装 Google Cloud Speech Api 并使用我的 .json 文件作为语音客户端的凭据。
现在我收到“使用 REST 传输时不支持流式调用”。
错误。
我错过了什么吗?下面是我的控制器的方法。
AudioController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Google\Cloud\Speech\V1\RecognitionConfig\AudioEncoding;
use Google\Cloud\Speech\V1\RecognitionConfig;
use Google\Cloud\Speech\V1\StreamingRecognitionConfig;
use Illuminate\Support\Facades\Storage;
use Symfony\Component\HttpFoundation\Response;
use Google\Cloud\Speech\V1\SpeechClient;
class AudioController extends Controller
{
public function getData(Request $request)
{
//$url = Storage::download('public/track.mp3');
$url = asset('storage/test.flac');
//$file = Storage::disk('public')->get('track.mp3');
//$download = new Response($file, 200);
// dd($request->all(), $url);
return view('welcome')->with('downloadLink', $url);
}
public function transcribedText(Request $request)
{
$recognitionConfig = new RecognitionConfig();
$recognitionConfig->setEncoding(AudioEncoding::FLAC);
$recognitionConfig->setSampleRateHertz(44100);
$recognitionConfig->setLanguageCode('en-US');
$config = new StreamingRecognitionConfig();
$config->setConfig($recognitionConfig);
$auth = Storage::disk('public')->get('auth.json');
$test = Storage::path('public/auth.json');
//dd(file_get_contents($test, true));
//dd(json_decode($auth));
//putenv('GOOGLE_APPLICATION_CREDENTIALS='.$auth);
$speechClient = new SpeechClient([
'credentials' => Storage::path('public/auth.json'),
]);
$file = Storage::disk('public')->get('test.flac');
// $audioResource = fopen('path/to/audio.flac', 'r');
$responses = $speechClient->recognizeAudioStream($config, $file);
foreach ($responses as $element) {
dd($element);
}
}
}
确保 PHP 的 gRPC 已安装并启用。
检查您的 php.ini 文件:
分机=grpc.so - Linux.
扩展名=php_grpc.dll - Windows.
添加作曲家依赖:
composer require "grpc/grpc:^1.38"
对于遇到相同问题的任何人:
Laravel Sail 使用 Vendor/Sail 文件夹下的常规 Dockerfile 以及同一目录中的 php.ini,在构建后被复制。
只需为 phar 添加:
&& apt-get install autoconf zlib1g-dev php-pear \
运行 curl -O https://pear.php.net/go-pear.phar
运行 php 去-pear.phar
运行 pecl 安装 grpc -q
这对 php.ini
分机=grpc.so
Wassup 伙计们,
我已成功安装 Google Cloud Speech Api 并使用我的 .json 文件作为语音客户端的凭据。
现在我收到“使用 REST 传输时不支持流式调用”。 错误。
我错过了什么吗?下面是我的控制器的方法。 AudioController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Google\Cloud\Speech\V1\RecognitionConfig\AudioEncoding;
use Google\Cloud\Speech\V1\RecognitionConfig;
use Google\Cloud\Speech\V1\StreamingRecognitionConfig;
use Illuminate\Support\Facades\Storage;
use Symfony\Component\HttpFoundation\Response;
use Google\Cloud\Speech\V1\SpeechClient;
class AudioController extends Controller
{
public function getData(Request $request)
{
//$url = Storage::download('public/track.mp3');
$url = asset('storage/test.flac');
//$file = Storage::disk('public')->get('track.mp3');
//$download = new Response($file, 200);
// dd($request->all(), $url);
return view('welcome')->with('downloadLink', $url);
}
public function transcribedText(Request $request)
{
$recognitionConfig = new RecognitionConfig();
$recognitionConfig->setEncoding(AudioEncoding::FLAC);
$recognitionConfig->setSampleRateHertz(44100);
$recognitionConfig->setLanguageCode('en-US');
$config = new StreamingRecognitionConfig();
$config->setConfig($recognitionConfig);
$auth = Storage::disk('public')->get('auth.json');
$test = Storage::path('public/auth.json');
//dd(file_get_contents($test, true));
//dd(json_decode($auth));
//putenv('GOOGLE_APPLICATION_CREDENTIALS='.$auth);
$speechClient = new SpeechClient([
'credentials' => Storage::path('public/auth.json'),
]);
$file = Storage::disk('public')->get('test.flac');
// $audioResource = fopen('path/to/audio.flac', 'r');
$responses = $speechClient->recognizeAudioStream($config, $file);
foreach ($responses as $element) {
dd($element);
}
}
}
确保 PHP 的 gRPC 已安装并启用。
检查您的 php.ini 文件:
分机=grpc.so - Linux.
扩展名=php_grpc.dll - Windows.
添加作曲家依赖:
composer require "grpc/grpc:^1.38"
对于遇到相同问题的任何人:
Laravel Sail 使用 Vendor/Sail 文件夹下的常规 Dockerfile 以及同一目录中的 php.ini,在构建后被复制。
只需为 phar 添加: && apt-get install autoconf zlib1g-dev php-pear \
运行 curl -O https://pear.php.net/go-pear.phar 运行 php 去-pear.phar 运行 pecl 安装 grpc -q
这对 php.ini 分机=grpc.so