保存 Google Cloud Speech API 操作(作业)对象以便稍后检索结果

2024-03-17

我正在努力将 Google Cloud Speech Api 与 ruby​​ 客户端 (v0.22.2) 一起使用。

我可以执行长时间运行的作业,并且如果使用的话可以获得结果

job.wait_until_done!

但这会导致服务器锁定很长一段时间。

根据 API 文档,我真正需要的只是操作名称(id)。

有没有办法从操作名称创建作业对象并以这种方式检索它? 我似乎无法创建一个功能性的新作业对象,例如使用 @grpc_op 中的 id

我想做的是这样的:

speech = Google::Cloud::Speech.new(auth_credentials)
job = speech.recognize_job file, options

saved_job = job.to_json #Or some element of that object such that I can retrieve it.

Later, I want to do something like....
job_object = Google::Cloud::Speech::Job.new(saved_job)

job.reload!

job.done?

job.results

真的希望这对某人有意义。 在使用 google 的 ruby​​ 客户端时遇到了很大的困难,因为所有内容似乎都被转换为比使用 API 所需的对象复杂得多的对象。 我在这里缺少一些技巧吗?


您可以将此功能猴子修补到您正在使用的版本,但我建议升级到谷歌云语音 0.24.0 https://github.com/GoogleCloudPlatform/google-cloud-ruby/releases/tag/google-cloud-speech%2Fv0.24.0或稍后。对于那些更新的版本,您可以使用Operation#id https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-speech/latest/google/cloud/speech/operation?method=id-instance and Project#operation https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-speech/latest/google/cloud/speech/project?method=operation-instance来实现这一点。

require "google/cloud/speech"

speech = Google::Cloud::Speech.new

audio = speech.audio "path/to/audio.raw",
                     encoding: :linear16,
                     language: "en-US",
                     sample_rate: 16000

op = audio.process
# get the operation's id
id = op.id #=> "1234567890"

# construct a new operation object from the id
op2 = speech.operation id

# verify the jobs are the same
op.id == op2.id #=> true

op2.done? #=> false
op2.wait_until_done!
op2.done? #=> true

results = op2.results

Update由于您无法升级,因此您可以使用中描述的解决方法将此功能猴子修补到旧版本GoogleCloudPlatform/google-cloud-ruby#1214 https://github.com/GoogleCloudPlatform/google-cloud-ruby/issues/1214#issuecomment-278823829:

require "google/cloud/speech"

# Add monkey-patches
module Google
  Module Cloud
    Module Speech
      class Job
        def id
          @grpc.name
        end
      end
      class Project
        def job id
          Job.from_grpc(OpenStruct.new(name: id), speech.service).refresh!
        end
      end
    end
  end
end

# Use the new monkey-patched methods
speech = Google::Cloud::Speech.new

audio = speech.audio "path/to/audio.raw",
                     encoding: :linear16,
                     language: "en-US",
                     sample_rate: 16000

job = audio.recognize_job
# get the job's id
id = job.id #=> "1234567890"

# construct a new operation object from the id
job2 = speech.job id

# verify the jobs are the same
job.id == job2.id #=> true

job2.done? #=> false
job2.wait_until_done!
job2.done? #=> true

results = job2.results
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

保存 Google Cloud Speech API 操作(作业)对象以便稍后检索结果 的相关文章

  • 从 ruby​​ 脚本运行另一个 ruby​​ 脚本

    在 ruby 中 是否可以指定使用与运行原始脚本相同的 ruby 解释器来调用另一个 ruby 脚本 例如 如果 a rb 运行 b rb 几次 是否可以替换 system ruby b rb foo bar 与类似的东西 run ruby
  • 在 (Mac)Vim 中查看 ri 时摆脱 ANSI 转义字符

    我在 gvim 和 MacVim 中查看 ri 文档时遇到问题 在两者上都尝试过 一些 ri 文档包含在终端窗口中查看时看起来不错的文本装饰 但在 gvim MacVim 中查看时包含 ANSI 转义字符 例如 以下 ri 片段来自 ri
  • 从 Ruby on Rails 3.2.6 中的 Paperclip 生成的文件中删除问号

    我正在使用 Paperclip FFMPEG 将视频文件上传到我的开发环境 并最终在我的项目投入生产时上传到本地服务器 视频上传时 默认文件名如下 system modelnames paperclipnames mynewfile mp4
  • Ruby openssl 文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有 Ruby 的在线文档openssl图书馆 我能找到的只是博客文章和第三方文章 而 rdoc 本
  • Ruby 中的方法和属性有什么区别?

    你可以给我一个例子吗 属性只是一个捷径 如果你使用attr accessor要创建属性 Ruby 只需声明一个实例变量并为您创建 getter 和 setter 方法 既然你要求一个例子 class Thing attr accessor
  • 如何检查用户电子邮件的唯一性并将结果传递给 jQuery?

    我有这个问题 我正在控制器中检查用户电子邮件并发送 json 成功响应 如果已获取 并添加输入的 css 样式 我还需要阻止提交并添加一些消息 这是我的检查电子邮件操作 使用本文 http paydrotalks com posts 45
  • 将 Rails 更新到特定版本

    如何将 Rails 更新到特定版本 我的本地计算机上有 Rails 3 2 2 但我需要更新到版本 3 2 3 如果我执行gem update rails 将会更新到最新的3 2 6版本 我怎样才能做到这一点 gem install rai
  • JavaScript 执行 Ruby 脚本

    服务器 客户端是同一个盒子 创建一个 UI 以在本地运行 ruby 测试脚本 我想要执行 ActiveXObject 之类的东西 w new ActiveXObject WScript Shell w run test rb 文件结构如下
  • Ruby 空白:{ :a => 1 } 比 {:a => 1} 更好吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 看看其他人的代码 在花括号块内包含额外的空格似乎很常见 这是有原因的吗 对我来说 这似乎增加了额外的击键 从而增加了丑陋 特别是当事情嵌套时 l
  • 在 Ruby 中将多个代码块作为参数传递

    我有一个需要代码块的方法 def opportunity opportunities 1 if yield performances 1 end end 我这样称呼它 opportunity some array empty 但是我如何传递
  • 机架测试失败:JSON 请求尚未响应

    我正在尝试为我的 Ruby 项目创建一个 JSON API 如下所示Ticketee https github com rails3book ticketeeYehuda Katz 书中提供的示例Rails 3 实际应用 http www
  • 未找到 Gem 命令

    我已经在 Ubuntu 10 10 32 位上安装了 gem apt get install gem y 但当我尝试跑步时 gem install something gem 我收到未找到命令的错误 bash gem command not
  • 设计涟漪

    我正在尝试使用以 riak 作为数据库的设备创建身份验证 我找到了同样的 ORM 策略https github com frank06 devise ripple https github com frank06 devise ripple
  • to_proc 方法在 Ruby 中意味着什么?

    我正在学习 Rails 并关注这个线程 https stackoverflow com questions 1961030 我被困住了to proc方法 我认为符号只是字符串的替代品 它们就像字符串 但在内存方面更便宜 如果我还缺少任何其他
  • 脚本标头过早结束:媒体(与以下问题相关:rails 应用程序部署+passenger+ubuntu+apache)

    我刚刚设置了一个 linode 服务器并在其上部署了我的 Rails 3 应用程序 它已启动并正在运行 问题是某些图像没有显示在生产中 在本地 它们工作正常 我仔细检查了日志文件 生产 log 但什么也没找到 然后我检查服务器 error
  • 字符串被两个不同的分隔符分割

    我有这样的字符串 some dasd dasd dasdas dasdas dasd das dsad 我需要用两个不同的符号将字符串拆分为数组 and 所以我想得到数组 some dasd dasd dasdas dasdas dasd
  • Rails 5.2 Active Storage 添加自定义属性

    我有一个带有附件的模型 class Project lt ApplicationRecord has many attached images end 当我附加并保存图像时 我还想保存一个附加的自定义属性 display order 整数
  • 数组中 1 到 100 个奇数

    Ruby 中有什么很酷的方法可以创建一个 1 到 100 且只有奇数条目 1 3 等 的数组 我现在有一个循环 但这显然不是一个很酷的方法 有什么建议么 我当前的代码 def create 1 to 100 odd array array
  • 带有可选第一个哈希参数和keyword_args的奇怪方法行为

    我有以下方法 def test first param nil keyword arg nil puts first param first param puts keyword arg keyword arg end 以下所有调用都按照我
  • Accepts_nested_attributes_for Rails 3 中的实际形式使用

    使用 Ruby on Rails 3 我半明白accepts nested attributes for是如何的supposed工作 但我无法找出以某种形式实现这一点的实用方法 例如 如果有人想在其用户页面中添加他们最近的位置 user r

随机推荐