noardcode / speech-to-text
此 Laravel 包为 Google 语音识别 API 提供了方便的接口。
Requires
- php: ^7.2
- google/cloud-speech: dev-master
- illuminate/support: ^5.8|^6.0|^7.0
Requires (Dev)
- laravel/homestead: ^4.0@dev
- orchestra/testbench: ^3.8
- phpunit/phpunit: ^8.1
This package is auto-updated.
Last update: 2024-09-13 15:07:59 UTC
README
此 Laravel 包为 Google 语音识别 API 提供了方便的接口。
先决条件
- 启用单词时间偏移选项时需要 gRPC 包。
- 步骤 1: 运行
pecl install grpc
- 步骤 2: 将
extension=grpc.so
添加到php.ini
- Windows 上的
grpc.dll
- Windows 上的
- 步骤 1: 运行
安装
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)。有关更多信息,请参阅 许可证文件。