1. Обзор
API Google Cloud Speech-to-Text позволяет разработчикам преобразовывать аудио в текст на 120 языках и с различными вариантами произношения, используя мощные модели нейронных сетей в удобном для использования API.
В этом практическом занятии вы сосредоточитесь на использовании API преобразования речи в текст с Node.js. Вы узнаете, как отправлять аудиофайлы на английском и других языках в облачный API преобразования речи в текст для транскрипции.
Что вы узнаете
- Как включить API преобразования речи в текст
- Как аутентифицировать запросы API
- Как установить клиентскую библиотеку Google Cloud для Node.js
- Как расшифровать аудиофайлы на английском языке
- Как расшифровать аудиофайлы с помощью временных меток.
- Как расшифровать аудиофайлы на разных языках
Что вам понадобится
Опрос
Как вы будете использовать этот учебный материал?
Как бы вы оценили свой опыт работы с Node.js?
Как бы вы оценили свой опыт использования сервисов Google Cloud Platform?
2. Настройка и требования
Настройка среды для самостоятельного обучения
- Войдите в Cloud Console и создайте новый проект или используйте существующий. (Если у вас еще нет учетной записи Gmail или G Suite, вам необходимо ее создать .)
Запомните идентификатор проекта (Project ID) — уникальное имя для всех проектов Google Cloud (указанное выше имя уже занято и вам не подойдёт, извините!). В дальнейшем в этом практическом занятии оно будет обозначаться как PROJECT_ID .
- Далее вам потребуется включить оплату в Cloud Console, чтобы использовать ресурсы Google Cloud.
Выполнение этого практического задания не должно стоить дорого, если вообще что-либо. Обязательно следуйте инструкциям в разделе «Очистка», где указано, как отключить ресурсы, чтобы избежать дополнительных расходов после завершения этого урока. Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .
Запустить Cloud Shell
Хотя Google Cloud можно управлять удаленно с ноутбука, в этом практическом занятии вы будете использовать Google Cloud Shell — среду командной строки, работающую в облаке.
Активировать Cloud Shell
- В консоли Cloud нажмите «Активировать Cloud Shell» .
.
Если вы никогда раньше не запускали Cloud Shell, вам будет показан промежуточный экран (внизу), описывающий его назначение. В этом случае нажмите «Продолжить» (и вы больше никогда его не увидите). Вот как выглядит этот одноразовый экран:
Подготовка и подключение к Cloud Shell займут всего несколько минут.
Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Она предоставляет постоянный домашний каталог размером 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Большая часть, если не вся, работа в этом практическом задании может быть выполнена с помощью обычного браузера или вашего Chromebook.
После подключения к Cloud Shell вы увидите, что ваша аутентификация пройдена и что проект уже настроен на ваш идентификатор проекта.
- Выполните следующую команду в Cloud Shell, чтобы подтвердить свою аутентификацию:
gcloud auth list
вывод команды
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
gcloud config list project
вывод команды
[core] project = <PROJECT_ID>
Если это не так, вы можете установить это с помощью следующей команды:
gcloud config set project <PROJECT_ID>
вывод команды
Updated property [core/project].
3. Включите API преобразования речи в текст.
Прежде чем начать использовать API преобразования речи в текст, необходимо его включить. Для этого в Cloud Shell можно использовать следующую команду:
gcloud services enable speech.googleapis.com
4. Аутентификация API-запросов
Для отправки запросов к API преобразования речи в текст вам потребуется использовать служебную учетную запись . Служебная учетная запись принадлежит вашему проекту и используется библиотекой Google Client Node.js для отправки запросов к API преобразования речи в текст. Как и любая другая учетная запись пользователя, служебная учетная запись представлена адресом электронной почты. В этом разделе вы будете использовать Cloud SDK для создания служебной учетной записи, а затем создадите учетные данные, необходимые для аутентификации в качестве учетной записи службы.
Сначала установите переменную окружения с вашим PROJECT_ID, которую вы будете использовать на протяжении всего этого практического занятия. Если вы используете Cloud Shell, она будет установлена автоматически:
export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)
Далее создайте новую учетную запись службы для доступа к API преобразования речи в текст, используя:
gcloud iam service-accounts create my-speech-to-text-sa \
--display-name "my speech-to-text codelab service account"
Далее создайте учетные данные, которые ваш код Node.js будет использовать для входа в систему под вашей новой учетной записью службы. Создайте эти учетные данные и сохраните их в виде JSON-файла ~/key.json , используя следующую команду:
gcloud iam service-accounts keys create ~/key.json \
--iam-account my-speech-to-text-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
Наконец, установите переменную среды GOOGLE_APPLICATION_CREDENTIALS , которая используется библиотекой Node.js Speech-to-Text API, описанной на следующем шаге, для поиска ваших учетных данных. Переменная среды должна быть установлена на полный путь к созданному вами JSON-файлу с учетными данными, используя:
export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"
Вы можете узнать больше об аутентификации API преобразования речи в текст .
5. Установите клиентскую библиотеку Google Cloud Speech-to-Text API для Node.js.
Сначала создайте проект, который вы будете использовать для выполнения этой лабораторной работы по API преобразования речи в текст, и инициализируйте новый пакет Node.js в выбранной вами папке:
npm init
NPM задает несколько вопросов о конфигурации проекта, таких как имя и версия. Для каждого вопроса нажмите ENTER , чтобы принять значения по умолчанию. Точкой входа по умолчанию является файл с именем index.js .
Далее установите библиотеку Google Cloud Speech в проект:
npm install --save @google-cloud/speech
Дополнительные инструкции по настройке среды разработки Node.js для Google Cloud см. в Руководстве по настройке .
Теперь вы готовы использовать API преобразования речи в текст!
6. Расшифровка аудиофайлов
В этом разделе вам предстоит расшифровать предварительно записанный аудиофайл на английском языке. Аудиофайл доступен в Google Cloud Storage.
Перейдите к файлу index.js внутри папки и замените код следующим:
// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');
const client = new speech.SpeechClient();
/**
* Calls the Speech-to-Text API on a demo audio file.
*/
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
const audio = {
uri: gcsUri,
};
const config = {
encoding: 'LINEAR16',
sampleRateHertz: 16000,
languageCode: 'en-US',
};
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}`);
}
quickstart();
Уделите минуту-две изучению кода и посмотрите, как он используется для расшифровки аудиофайла*.
Параметр Encoding указывает API, какой тип кодирования используется для аудиофайла. Для файлов .raw используется кодировка Flac (подробнее о типах кодирования см. в документации ).
В объекте RecognitionAudio вы можете передать API либо URI нашего аудиофайла в Cloud Storage, либо локальный путь к аудиофайлу. В данном случае мы используем URI из Cloud Storage.
Запустите программу:
node .
Вы должны увидеть следующий результат:
how old is the Brooklyn Bridge
7. Перепишите текст с указанием временных меток.
Функция преобразования речи в текст может определять временную метку (смещение по времени) для расшифрованного аудио. Временная метка показывает начало и конец каждого произнесенного слова в предоставленном аудиофайле. Значение временной метки представляет собой количество времени, прошедшее с начала аудиофайла, с шагом в 100 мс.
Перейдите к файлу index.js внутри папки и замените код следующим:
const speech = require('@google-cloud/speech');
const client = new speech.SpeechClient();
/**
* Calls the Speech-to-Text API on a demo audio file.
*/
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
const audio = {
uri: gcsUri,
};
const config = {
encoding: 'LINEAR16',
sampleRateHertz: 16000,
languageCode: 'en-US',
enableWordTimeOffsets: true,
};
const request = {
audio: audio,
config: config,
};
// Detects speech in the audio file
const [response] = await client.recognize(request);
response.results.forEach((result) => {
result.alternatives.forEach((alternative) => {
console.log(`Transcript: ${alternative.transcript}`);
console.log(`Word details:`);
console.log(` Word count ${alternative.words.length}`);
alternative.words.forEach((item) => {
console.log(` ${item.word}`);
const s = parseInt(item.startTime.seconds) +
item.startTime.nanos/1000000000;
console.log(` WordStartTime: ${s}s`);
const e = parseInt(item.endTime.seconds) +
item.endTime.nanos/1000000000;
console.log(` WordEndTime: ${e}s`);
});
});
});
}
quickstart();
Уделите минуту-две изучению кода и убедитесь, что он используется для транскрипции аудиофайла с временными метками слов*. Параметр EnableWordTimeOffsets указывает API на необходимость включения временных смещений (подробнее см. в документации ).
Запустите программу еще раз:
node .
Вы должны увидеть следующий результат:
Transcript: how old is the Brooklyn Bridge
Word details:
Word count 6
how
WordStartTime: 0s
WordEndTime: 0.3s
old
WordStartTime: 0.3s
WordEndTime: 0.6s
is
WordStartTime: 0.6s
WordEndTime: 0.8s
the
WordStartTime: 0.8s
WordEndTime: 0.9s
Brooklyn
WordStartTime: 0.9s
WordEndTime: 1.1s
Bridge
WordStartTime: 1.1s
WordEndTime: 1.4s
8. Транскрибирование на разных языках.
API преобразования речи в текст поддерживает транскрипцию более чем на 100 языках! Список поддерживаемых языков можно найти здесь .
В этом разделе вам предстоит расшифровать предварительно записанный аудиофайл на французском языке. Аудиофайл доступен в Google Cloud Storage.
Перейдите к файлу index.js внутри папки и замените код следующим:
// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');
const client = new speech.SpeechClient();
/**
* Calls the Speech-to-Text API on a demo audio file.
*/
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
const gcsUri = 'gs://cloud-samples-data/speech/corbeau_renard.flac';
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
const audio = {
uri: gcsUri,
};
const config = {
encoding: 'FLAC',
languageCode: 'fr-FR',
};
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}`);
}
quickstart();
Запустите программу ещё раз, и вы должны увидеть следующий результат:
maître corbeau sur un arbre perché tenait en son bec un fromage
Это отрывок из популярной французской детской сказки .
Полный список поддерживаемых языков и языковых кодов см. в документации здесь .
9. Поздравляем!
Вы научились использовать API преобразования речи в текст с помощью Node.js для выполнения различных видов транскрипции аудиофайлов!
Уборка
Чтобы избежать списания средств с вашего счета Google Cloud Platform за ресурсы, использованные в этом кратком руководстве:
- Перейдите в консоль облачной платформы .
- Выберите проект, который хотите закрыть, затем нажмите кнопку «Удалить» вверху: это запланирует удаление проекта.
Узнать больше
- API Google Cloud для преобразования речи в текст: https://cloud.google.com/speech-to-text/docs
- Node.js на платформе Google Cloud Platform: https://cloud.google.com/nodejs/
- Клиент Google Cloud Node.js: https://googlecloudplatform.github.io/google-cloud-node/
Лицензия
Данная работа распространяется под лицензией Creative Commons Attribution 2.0 Generic.