Как запустить GCP Google Speech API через функцию Firebase Cloud? - PullRequest
1 голос
/ 19 июня 2020

У меня есть работающая nodejs программа в GCP, которая использует GCP Speech to Text API

async function main() {
  // Imports the Google Cloud client library
  const speech = require('@google-cloud/speech');
  const fs = require('fs');

  // Creates a client
  const client = new speech.SpeechClient();

  const fileName = './resource/amazing30s_mono.flac';  // mono clip
  // Reads a local audio file and converts it to base64 
  const file = fs.readFileSync(fileName);
  const audioBytes = file.toString('base64');

  // The audio file's encoding, sample rate in hertz, and BCP-47 language code
  const audio = {
    content: audioBytes,
  };
  const config = {
    languageCode: 'en-US',  // Malay try 'ms-MY' (https://cloud.google.com/speech-to-text/docs/languages)
    enableAutomaticPunctuation: true, // https://cloud.google.com/speech-to-text/docs/automatic-punctuation
  };
  const request = {
    audio: audio,
    config: config,
  };

  // Detects speech in the audio file
  const [response] = await client.recognize(request);
  const transcription = response.results
    .map(result => result.alternatives[0].transcript)
    .join('\n');
  console.log(`Transcription: ${transcription}`);
}
main().catch(console.error);

И у меня есть работающий TypeScript Firebase Cloud Fun c

import * as functions from 'firebase-functions';

export const reqWithParam = functions.https.onRequest((request, response) => {
  let name = request.query.name
  response.send("Request with name= " + name);
});

Но как мне интегрировать обе программы? Или как я могу добавить код nodejs в свою функцию Firebase Cloud, чтобы моя облачная функция Firebase запускала Google API для преобразования речи в текст?

Обе программы, указанные выше, находятся в одном проекте GCP, на одном сервере (Google облачная оболочка)

Я прочитал do c, но все еще отсутствуют пробелы

  • Как «Импортировать» программу узла
  • Как получить путь GS к аудиофайлу
  • Как проверить токен (тот же проект GCP)
  • Любой учебник YouTube с подробными инструкциями по вызову GCP API через Firebase

1 Ответ

1 голос
/ 20 июня 2020

Я был удивлен, когда заметил, что код nodejs можно просто вставить в Typescript без каких-либо ошибок! Мне удалось безупречно запустить Google API в Firebase

export const GCPSpeech2Text = functions.https.onRequest(async (req, res) => {

    const speech = require('@google-cloud/speech');
    // Creates a client
    const client = new speech.SpeechClient();
    const gcsUri = 'gs://<project-name>.appspot.com/<file path...>/myaudio.flac'

    const encoding = 'FLAC';
    const languageCode = 'en-US';

    const config = {
        encoding: encoding,
        languageCode: languageCode,
        audioChannelCount: 2, // hit 'Invalid audio channel count' if not specify
        enableAutomaticPunctuation: true, // https://cloud.google.com/speech-to-text/docs/automatic-punctuation
    };

    const audio = {
        uri: gcsUri,
    };

    const request = {
        audio: audio,
        config: config,
    };

    // Detects speech in the audio file
    const [response] = await client.recognize(request);
    const transcription = response.results
        .map((result: any) => result.alternatives[0].transcript)
        .join('\n');
    res.send(`Transcription ${transcription} created.`);
})

Да!

...