Informacje o tym ćwiczeniu (w Codelabs)
1. Omówienie
Interfejs Google Cloud Speech-to-Text API umożliwia programistom konwertowanie dźwięku na tekst w 120 językach i wariantach przez zastosowanie zaawansowanych modeli sieci neuronowych w łatwym w użyciu interfejsie API.
W tym ćwiczeniu w Codelabs dowiesz się, jak używać interfejsu Speech-to-Text API w środowisku Node.js. Dowiesz się, jak wysłać plik audio w języku angielskim i innych językach do interfejsu Cloud Speech-to-Text API w celu wykonania transkrypcji.
Czego się nauczysz
- Jak włączyć interfejs Speech-to-Text API
- Jak uwierzytelniać żądania do interfejsu API
- Jak zainstalować bibliotekę klienta Google Cloud dla Node.js
- Jak tworzyć transkrypcje plików audio w języku angielskim
- Jak tworzyć transkrypcje plików audio z sygnaturami czasowymi słów
- Jak tworzyć transkrypcje plików audio w różnych językach
Czego potrzebujesz
- Projekt Google Cloud Platform
- przeglądarkę, np. Chrome lub Firefox;
- znajomość języka JavaScript/Node.js,
Ankieta
Jak wykorzystasz ten samouczek?
Jak oceniasz korzystanie z Node.js?
Jak oceniasz swoje wrażenia z korzystania z usług Google Cloud Platform?
2. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail lub G Suite, musisz je utworzyć.
Zapamiętaj identyfikator projektu, unikalną nazwę we wszystkich projektach Google Cloud (powyższa nazwa jest już zajęta i nie będzie Ci odpowiadać). W dalszej części tego ćwiczenia w programie będzie ona określana jako PROJECT_ID
.
- Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Google Cloud.
Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Postępuj zgodnie z instrukcjami podanymi w sekcji „Czyszczenie” W tym samouczku znajdziesz wskazówki, jak wyłączyć zasoby, aby uniknąć naliczania opłat. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.
Uruchamianie Cloud Shell
Google Cloud można obsługiwać zdalnie z laptopa, ale w ramach tego ćwiczenia z programowania wykorzystasz Google Cloud Shell – środowisko wiersza poleceń działające w Cloud.
Aktywowanie Cloud Shell
- W konsoli Cloud kliknij Aktywuj Cloud Shell
.
Jeśli dopiero zaczynasz korzystać z Cloud Shell, wyświetli się ekran pośredni (w części strony widocznej po przewinięciu) z opisem tej funkcji. W takim przypadku kliknij Dalej (nie zobaczysz go więcej). Tak wygląda ten jednorazowy ekran:
Uzyskanie dostępu do Cloud Shell i połączenie się z nim powinno zająć tylko kilka chwil.
Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i uwierzytelnianie. Większość czynności z tego ćwiczenia z programowania można wykonać w przeglądarce lub na Chromebooku.
Po nawiązaniu połączenia z Cloud Shell powinno pojawić się informacja, że użytkownik jest już uwierzytelniony i że projekt jest już ustawiony na identyfikator Twojego projektu.
- Uruchom to polecenie w Cloud Shell, aby potwierdzić, że jesteś uwierzytelniony:
gcloud auth list
Dane wyjściowe polecenia
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
gcloud config list project
Dane wyjściowe polecenia
[core] project = <PROJECT_ID>
Jeśli tak nie jest, możesz go ustawić za pomocą tego polecenia:
gcloud config set project <PROJECT_ID>
Dane wyjściowe polecenia
Updated property [core/project].
3. Włączanie Speech-to-Text API
Zanim zaczniesz korzystać ze Speech-to-Text API, musisz go włączyć. Interfejs API możesz włączyć, używając w Cloud Shell tego polecenia:
gcloud services enable speech.googleapis.com
4. Uwierzytelnianie żądań do interfejsu API
Aby wysyłać żądania do interfejsu Speech-to-Text API, musisz używać konta usługi. Konto usługi należy do Twojego projektu i jest używane przez bibliotekę klienta Google Node.js do wysyłania żądań do interfejsu Speech-to-Text API. Tak jak każde inne konto użytkownika, konto usługi jest reprezentowane przez adres e-mail. W tej sekcji utworzysz konto usługi za pomocą pakietu Cloud SDK, a następnie utworzysz dane logowania, które będziesz potrzebować do uwierzytelnienia jako konto usługi.
Najpierw ustaw zmienną środowiskową wykorzystującą Twój PROJECT_ID (IDENTYFIKATOR_PROJEKTU), której będziesz używać w ramach tego ćwiczenia z programowania. Jeśli używasz Cloud Shell, ustawisz tę wartość:
export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)
Następnie utwórz nowe konto usługi, aby uzyskać dostęp do interfejsu Speech-to-Text API, korzystając z:
gcloud iam service-accounts create my-speech-to-text-sa \
--display-name "my speech-to-text codelab service account"
Następnie utwórz dane logowania, których Twój kod w Node.js będzie używać do logowania się jako Twoje nowe konto usługi. Utwórz te dane logowania i zapisz je w pliku JSON ~/key.json
, korzystając z następującego polecenia:
gcloud iam service-accounts keys create ~/key.json \
--iam-account my-speech-to-text-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
Na koniec ustaw zmienną środowiskową GOOGLE_APPLICATION_CREDENTIALS
używaną przez bibliotekę Speech-to-Text API Node.js (opisaną w następnym kroku), aby znaleźć swoje dane logowania. Zmienna środowiskowa powinna zawierać pełną ścieżkę do utworzonego przez Ciebie pliku JSON z danymi logowania za pomocą polecenia:
export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"
Dowiedz się więcej o uwierzytelniania interfejsu Speech-to-Text API.
5. Instalowanie biblioteki klienta interfejsu Google Cloud Speech-to-Text API dla Node.js
Najpierw utwórz projekt, którego użyjesz do uruchomienia tego modułu dotyczącego interfejsu Speech-to-Text API. Zainicjuj nowy pakiet Node.js w wybranym folderze:
npm init
Narzędzie NPM zadaje kilka pytań dotyczących konfiguracji projektu, np. nazwy i wersji. Przy każdym pytaniu naciśnij ENTER
, aby zaakceptować wartości domyślne. Domyślnym punktem wejścia jest plik o nazwie index.js
.
Następnie zainstaluj w projekcie bibliotekę Google Cloud Speech:
npm install --save @google-cloud/speech
Więcej instrukcji konfigurowania środowiska programistycznego w środowisku Node.js na potrzeby Google Cloud znajdziesz w przewodniku po konfiguracji.
Teraz możesz zacząć korzystać ze Speech-to-Text API.
6. Transkrybuj pliki audio
W tej sekcji utworzysz transkrypcję nagranego wcześniej pliku audio w języku angielskim. Plik audio jest dostępny w Google Cloud Storage.
Przejdź do pliku index.js
wewnątrz kodu i zastąp go tym:
// 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();
Poświęć kilka minut na zapoznanie się z kodem i sprawdź, czy jest on używany do transkrypcji pliku audio*.*
Parametr Encoding
informuje interfejs API, jakiego typu kodowania dźwięku używasz w przypadku pliku audio. Flac
to typ kodowania dla plików RAW (więcej informacji znajdziesz w dokumentacji).
W obiekcie RecognitionAudio
możesz przekazać interfejs API albo identyfikator URI pliku audio w Cloud Storage, albo lokalną ścieżkę pliku audio. Tutaj używamy identyfikatora URI Cloud Storage.
Uruchom program:
node .
Powinny się wyświetlić te dane wyjściowe:
how old is the Brooklyn Bridge
7. Transkrybuj z sygnaturami czasowymi słów
Funkcja Speech-to-Text może wykryć przesunięcie czasu (sygnaturę czasową) w transkrybowanych treściach audio. Przesunięcia czasu pokazują początek i koniec każdego wypowiedzianego słowa w dostarczonym dźwięku. Wartość przesunięcia czasu reprezentuje czas, który upłynął od rozpoczęcia odtwarzania dźwięku, w przyrostach co 100 ms.
Przejdź do pliku index.js
wewnątrz kodu i zastąp go tym:
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();
Poświęć kilka minut na zapoznanie się z kodem i sprawdź, czy służy on do tworzenia transkrypcji pliku audio z sygnaturami czasowymi słów*.* Parametr EnableWordTimeOffsets
informuje interfejs API, że ma włączyć przesunięcia czasu (więcej informacji znajdziesz w dokumencie).
Uruchom program ponownie:
node .
Powinny się wyświetlić te dane wyjściowe:
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. Transkrybuj różne języki
Interfejs Speech-to-Text API obsługuje transkrypcję w ponad 100 językach. Listę obsługiwanych języków znajdziesz tutaj.
W tej sekcji utworzysz transkrypcję nagranego wcześniej pliku audio w języku francuskim. Plik audio jest dostępny w Google Cloud Storage.
Przejdź do pliku index.js
wewnątrz kodu i zastąp go tym:
// 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();
Uruchom program ponownie, a powinny wyświetlić się takie wyniki:
maître corbeau sur un arbre perché tenait en son bec un fromage
To zdanie z popularnej francuskiej baśni dla dzieci.
Pełną listę obsługiwanych języków i kodów języków znajdziesz tutaj.
9. Gratulacje!
Wiesz już, jak korzystać ze Speech-to-Text API za pomocą Node.js do wykonywania różnych rodzajów transkrypcji plików audio.
Czyszczenie danych
Oto kroki, które musisz wykonać, aby uniknąć obciążenia konta Google Cloud Platform opłatami za zasoby zużyte podczas krótkiego wprowadzenia:
- Otwórz konsolę Cloud Platform.
- Wybierz projekt, który chcesz wyłączyć, i kliknij „Usuń”. u góry: spowoduje to zaplanowanie usunięcia projektu.
Więcej informacji
- Interfejs Google Cloud Speech-to-Text API: https://cloud.google.com/speech-to-text/docs
- Node.js w Google Cloud Platform: https://cloud.google.com/nodejs/
- Klient Google Cloud Node.js: https://googlecloudplatform.github.io/google-cloud-node/
Licencja
To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.