将 Google STT 从 Cloud Functions 移动到专用 GAE

Moving Google STT from Cloud Functions to dedicated GAE

我正在使用 Cloud Functions 从存储桶中的 getUserMedia() 转换 audio/mp4
使用 ffmpeg audio/x-flac 格式以便能够使用 Google STT

转录它
bucket
  .file(file.name)
  .download({ destination })
  .then(() =>
     ffmpeg(destination)
       .setFfmpegPath(ffmpeg_static.path)
       .audioChannels(1)
       .audioFrequency(16000)
       .format('flac')
       .on('error', console.log)
       .on('end', () =>
          bucket
            .upload(targetTempFilePath, { destination: targetStorageFilePath })
            .then(() => {
               fs.unlinkSync(destination);
               fs.unlinkSync(targetTempFilePath);
            });
        )
        .save(targetTempFilePath);
      )
  );

工作流程:客户端 MP4 => 存储桶触发器 => STT => Firestore
它工作得很好,我得到了干净的 FLAC 文件,STT 在这个组合中完美地工作!

但仅当

每个输入文件不超过 1-2 Mb(通常我一次输入一系列 5-10 个文件)。
我知道 10 Mb 的限制,现在我想让 Cloud Functions 仅处理图像处理并将所有音频内容移动到某个专用的 GAE 或 GCE 实例。

哪个更好用:在本例中为 GAE 或 GCP,dockerized 或 native,Python 或 Node 等
将文件放在存储上后,如何在 GCP 实例上触发工作流?
任何想法或想法都将受到热烈欢迎!

我建议您使用 Cloud Function 作为 Cloud Storage 触发器。 通过这种方式,您将能够获取您特定存储桶中上传的文件的名称。 您可以检查 this documentation 关于 Google 云存储触发器,以查看一些示例。

如果您使用Python,您可以使用以下方式查看文件名:

print('File: {}'.format(data['name']))

获得文件名后,您可以向 GAE 请求转换音频。

我还发现 解释了如何调用 Google App Engine 中托管的 URL,我认为它可能对您有用。

希望对您有所帮助!