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"

Install gRPC for PHP

对于遇到相同问题的任何人:

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