Пустая ошибка при использовании Google Cloud Speech-to-text - PullRequest
1 голос
/ 06 июня 2019

Я пытаюсь использовать API Google Speech-to-text из App Engine (для которого не требуется ключ учетных данных). Однако при запуске кода для получения ответа я получаю пустую ошибку.

const detectspeech =  async (audioBytes) => {
    try {
        const client = new speech.SpeechClient();
        const audio = {
            content: audioBytes,
        };
        const config = {
            enableAutomaticPunctuation: true,
            encoding: "LINEAR16",
            model: "default",
            languageCode: 'en-US',
        };
        const request = {
            audio: audio,
            config: config,
        };
        console.log("1");
        const [response] = await client.recognize(request);
        console.log("2");
        const transcription = response.results
            .map(result => result.alternatives[0].transcript)
            .join('\n');
        return { data: "Success"};

    }catch(e)
    {
        return {error: e};
    }

}

В журнале я распечатал число «1», но не «2», поэтому я предположил бы, что результат лежит в строке await client.recognize(request);. Однако, улавливая ошибку, я получил ошибку с пустым полем, например {}.

Это определенно не сильно помогает при отладке. Так может кто-нибудь помочь. Спасибо.

Ответы [ 2 ]

0 голосов
/ 09 июня 2019

Хорошо, во многом это связано с тем, что я новичок в nodejs. Вместо этого должен быть лог e.message.

Однако основная проблема ошибки остается, и эта ошибка: неверное форматирование.

Так что всем, кто хочет использовать Google Speech-to-text с Facebook Messenger (это то, что я делаю):

  • Facebook Messenger преобразует все в файл .mp4. mp3 -> mp4, wav -> mp4 ... все.

  • Google Speech-to-Text НЕ примет MP3, MP4 звуковой формат. Они привыкли к AFAIK, так как в их v1 RecognitionConfig есть поддержка формата MP3, но у их v1p1beta1 его больше нет.

  • Если вы отправляете текст с помощью их инструмента у себя дома Страница преобразования текста в текст , вы увидите, что даже mp4 работает, но это не означает, что API работает с mp4. Зачем удалять поддержку наиболее распространенного типа аудиофайлов? Я хотел бы знать. Это может измениться в будущем, но, к сведению, это просто добавляет больше работы.

То, что вам нужно сделать, по крайней мере, то, что я сделал успешно, это использовать API преобразования файлов, например Zamzar .

Мне потребовалось некоторое время, чтобы настроить, используя их документ, но опять же, я новичок в nodejs. В основном:

  • Получите URL-адрес полезной нагрузки в Facebook Messenger для URL-адреса вашего голосового клипа.

  • Передайте этот URL-адрес Zamzar для преобразования файлов. Выберите формат 'wav'

  • Проверка статуса преобразования.

  • Когда статус будет завершен, получите преобразованный файл.

  • Кодирование файла в base64

  • Передайте это в Google Speech-to-Text API, который может легко распознавать файлы 'wav' без особых настроек.

  • Получите результат.

0 голосов
/ 07 июня 2019

Использование

app.get('/', async(req, res) => {
  res.send(await detectspeech())
...