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

时间:2019-10-15 23:04:00

标签: javascript google-app-engine google-cloud-functions google-speech-api

我正在使用Cloud Functions从存储桶中的getUserMedia()转换audio/mp4
使用audio/x-flac转换为ffmpeg格式,以便能够使用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可以完美地结合使用!

但只有IF

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

最好使用什么:在这种情况下,使用GAE或GCP,dockerized或native,Python或Node等。
将文件放在存储设备上后,如何在GCP实例上触发工作流程?
任何想法都将受到欢迎!

1 个答案:

答案 0 :(得分:1)

我建议您使用Cloud Function作为Cloud Storage触发器。 这样,您将能够获取特定存储桶中上传的文件的名称。 您可以查看this documentation有关Google Cloud Storage触发器的信息,以查看一些示例。

如果使用Python,则可以使用以下命令查看文件名:

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

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

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

希望这会有所帮助!