小编eli*_*0tt的帖子

Google SpeechToText API:OGG Opus 音频流没有响应文本

我正在使用SpeechToText API从现场麦克风录音中获取语音转录。这适用于简单的 LINEAR16 编码,但我需要减少带宽,因此我切换到 OGG Opus 编码。
使用这个库在 OGG Opus 客户端中记录和编码音频。
然后,它使用 websocket 发送到后端应用程序。
最后,后端应用程序以流模式请求 STT API,该模式保持静默(没有错误,但输出中也没有文本)。

这些是编码选项:

var options = {
    monitorGain: 0,
    recordingGain: 1,
    numberOfChannels: 1,
    encoderSampleRate: 16000,
    encoderPath: "./javascript/ogg_opus/encoderWorker.min.js",
    originalSampleRateOverride: 16000,
    streamPages: true,
    encoderApplication: 2048
};
Run Code Online (Sandbox Code Playgroud)

这是发送到 API 的配置:

{
   encoding: 'OGG_OPUS',
   language: 'fr',
   rate: 16000
}
Run Code Online (Sandbox Code Playgroud)

这是将音频发送到 websocket 的方式:

recorder.ondataavailable = function(typedArray){
    var dataBlob = new Blob([typedArray], { type: 'audio/ogg' });
    websocket.emit('audio_data', dataBlob);
};
Run Code Online (Sandbox Code Playgroud)

后端部分是用 Python 开发的,遵循这个例子

您知道使 API 工作所需的 …

javascript ogg opus google-speech-api google-cloud-speech

6
推荐指数
0
解决办法
458
查看次数

从 mongodb $avg 中排除 0 个值但保留其他字段

我在 MongoDB 3.2 上运行了一些聚合查询。我想按一个字段对文档进行分组,并在另一个数字字段上取平均值。我需要平均值来忽略 0 值。问题是我无法完全过滤文档,因为我需要另一个字段进行计数。

让我们举例说明:

这是我的文档的结构:

{"stringToGroupByOn":"foo", "valueToAvg":42, "valueToSum":21}
{"stringToGroupByOn":"foo", "valueToAvg":0, "valueToSum":13}
Run Code Online (Sandbox Code Playgroud)

我不能像这样过滤:

db.foobar.aggregate([
    { 
        $match : { valueToAvg : { $gt : 0 } } 
    },
    { 
        $group : {
            _id : '$stringToGroupByOn',
            avg : { $avg :  '$valueToAvg' }, 
            count : { $sum : '$valueToSum' }
        }
    }
])
Run Code Online (Sandbox Code Playgroud)

因为我失去了计数的值 13。

你认为有一种方法可以只在一个查询中做到这一点吗?

mongodb aggregation-framework

5
推荐指数
1
解决办法
1万
查看次数

从 GitLab CI 将应用程序部署到 App Engine 时权限被拒绝

我在使用 GitLab CI 将 Python 3 应用程序自动部署到 App Engine 标准时遇到了问题。

出现以下错误:

DEBUG: (gcloud.app.deploy) Error Response: [7] Failed to create cloud build: Permission denied
 Traceback (most recent call last):
   File "/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 984, in Execute
     resources = calliope_command.Run(cli=self, args=args)
   File "/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 807, in Run
     resources = command_instance.Run(args)
   File "/google-cloud-sdk/lib/surface/app/deploy.py", line 110, in Run
     default_strategy=flex_image_build_option_default))
   File "/google-cloud-sdk/lib/googlecloudsdk/command_lib/app/deploy_util.py", line 642, in RunDeploy
     ignore_file=args.ignore_file)
   File "/google-cloud-sdk/lib/googlecloudsdk/command_lib/app/deploy_util.py", line 432, in Deploy
     extra_config_settings)
   File "/google-cloud-sdk/lib/googlecloudsdk/api_lib/app/appengine_api_client.py", line 208, in DeployService
     poller=done_poller)
   File "/google-cloud-sdk/lib/googlecloudsdk/api_lib/app/operations_util.py", line 314, in …
Run Code Online (Sandbox Code Playgroud)

python google-app-engine google-cloud-platform gitlab-ci

4
推荐指数
1
解决办法
4619
查看次数

onEdit 函数更新撤消历史记录

我需要在开发人员元数据中存储工作表的上次修改用户和日期。

我使用 onEdit 函数在每次编辑工作表时更新这些元数据(请参阅下面的代码)

我的问题是在撤消历史记录中考虑了元数据创建/更新。

所以用户需要按 ctrl+Z 三次才能取消...

您知道避免这种行为的方法吗?

function onEdit(e) {
  // Prevent errors if no object is passed.
  if (!e) return;

  var dateMetadata;
  var dateKey = 'lastModificationDate';
  var userMetadata;
  var userKey = 'lastModificationUser';

  // Get the active sheet.
  var sheet = e.source.getActiveSheet();
  var user = e.user.getEmail();
  var date = Math.floor(Date.now() / 1000);
  metadatas = sheet.getDeveloperMetadata();

  for each (var m in metadatas) {
    if (m.getKey() === dateKey) {
      dateMetadata = m;
    }

    if (m.getKey() === userKey) {
      userMetadata = …
Run Code Online (Sandbox Code Playgroud)

google-sheets google-apps-script

1
推荐指数
1
解决办法
721
查看次数