noardcode/speech-to-text

此 Laravel 包为 Google 语音识别 API 提供了方便的接口。

v1.0.0 2020-08-12 08:39 UTC

This package is auto-updated.

Last update: 2024-09-13 15:07:59 UTC


README

此 Laravel 包为 Google 语音识别 API 提供了方便的接口。

Latest Version MIT Licensed Total Downloads

先决条件

  • 启用单词时间偏移选项时需要 gRPC 包。
    • 步骤 1: 运行 pecl install grpc
    • 步骤 2: 将 extension=grpc.so 添加到 php.ini
      • Windows 上的 grpc.dll

安装

composer require noardcode/speech-to-text

入门

  • 打开 Google Cloud Console,并将 Cloud Speech-to-Text API 添加到项目中 API 和服务
  • 创建一个具有以下角色的 Google 服务帐户:Cloud Speech Service Agent。
    • 确保生成服务帐户密钥,此文件将用于身份验证。
  • 运行 php artisan vendor:publish --provider="Noardcode\SpeechToText\SpeechToTextServiceProvider"
    • 这将在您的 config 文件夹中创建一个 speech-to-text.php 文件。
  • speech-to-text.php 中更改以下内容
/*
|--------------------------------------------------------------------------
| Google Service Account
|--------------------------------------------------------------------------
*/
'service-account' => '/path/to/service-account.json',

有关服务帐户的详细文档,请参阅: https://cloud.google.com/docs/authentication/production

基本示例

// Run on Google Cloud Storage object
resolve(SpeechToText::class)->run('gs://your-bucket-name/path-to-object');

// Run on stored audio file (needs to be: less than 10MB in size and less than 1 minute in length)
resolve(SpeechToText::class)
    ->setAudio(new FilesystemAudio)
    ->run('/path/to/audio-file');

// Using different types of transcripts (e.g. include word time offsets (startTime and endTime))
resolve(SpeechToText::class)->run('gs://your-bucket-name/path-to-object')
    ->setTranscript(new WordTimeOffsets)
    ->run('gs://your-bucket-name/path-to-object');

设置

您可以通过发布配置文件并更改以下值来更改默认设置。

/*
|--------------------------------------------------------------------------
| Default parameters injected by the Service Provider
|--------------------------------------------------------------------------
*/
'defaults' => [
    'language' => 'en-US',
    'encoding' => \Google\Cloud\Speech\V1\RecognitionConfig\AudioEncoding::LINEAR16,
    'sampleRateHertz' => 44100
]

或者,在拥有类实例时更改设置。

$speechToText = resolve(SpeechToText::class)
    ->setLanguageCode('en-US')
    ->setEncoding(\Google\Cloud\Speech\V1\RecognitionConfig\AudioEncoding::LINEAR16)
    ->setSampleRateHertz(44100);

音频类型

默认情况下,SpeechToText 类将传递 GoogleCloudStorageAudio 类。此类告诉 SpeechToText 类如何从 Google 语音识别包创建 RecognitionAudio 类。如果您想以不同的方式创建 RecognitionAudio,例如从本地文件系统中创建文件,则需要设置另一个实现 AudioInterface 的 Audio 类。

// Run on audio file on local filesyem 
resolve(SpeechToText::class)
    ->setAudio(new FilesystemAudio)
    ->run('/path/to/audio-file');

备注:Google 仅支持发送以下类型的内联文件:小于 10MB 的大小,小于 1 分钟的长度。

文本

默认情况下,SpeechToText 类将传递 BasicTranscript 类。此类告诉 SpeechToText 类如何处理来自 Google 语音识别包的 SpeechClient 类的响应。如果您想以不同的方式处理来自 SpeechClient 的响应,例如包括单词时间偏移,则需要设置另一个实现 TranscriptInterface 的 Transcript 类。

// Using different types of transcripts (e.g. include word time offsets (startTime and endTime))
resolve(SpeechToText::class)->setTranscript(new WordTimeOffsets())
    ->run('gs://your-bucket-name/path-to-object');

单词时间偏移文本示例输出

array:2 [
  'transcript' => array:10 [
      0 => array:3 [
        "transcript" => "hello world"
        "confidence" => 0.96761703491211
        "words" => array:9 [
          0 => array:3 [
            "word" => "hello"
            "startTime" => 0
            "endTime" => 0.3
          ]
          1 => array:3 [
            "word" => "world"
            "startTime" => 0.3
            "endTime" => 0.5
          ]
          ...
        ]
      ]
      1 => array:3 [
        "transcript" => "foo bar buz"
        "confidence" => 0.74065810441971
        "words" => array:7 [
            ...
        ]
      ]
  ]
  'words' => array:45 [
      0 => array:3 [
         "word" => "hello"
         "startTime" => 0
         "endTime" => 0.3
      ]
      1 => array:3 [
          "word" => "world"
          "startTime" => 0.3
          "endTime" => 0.5
      ]
      ...
  ]
]

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

贡献是 欢迎 的,并将获得 全面认可。我们通过 Github 上的拉取请求接受贡献。

拉取请求

  • PSR-2 编码标准 - 应用约定最简单的方法是安装 PHP Code Sniffer
  • 记录任何行为变更 - 确保保持 README.md 和任何其他相关文档的最新状态。
  • 创建功能分支 - 不要要求我们从您的 master 分支中提取。
  • 每个功能一个拉取请求 - 如果您想做更多的事情,请发送多个拉取请求。

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件