Transkrypcja mowy na tekst za pomocą interfejsu Cloud Speech-to-Text API

Cloud Speech API umożliwia transkrypcję mowy zarejestrowanej w plikach audio na tekst w ponad 80 językach.

W tym module nagramy plik audio i prześlemy go do transkrypcji w Cloud Speech API.

Czego się nauczysz

  • Tworzenie żądania do interfejsu Speech API i wywoływanie tego interfejsu za pomocą polecenia curl
  • Wywoływanie interfejsu Speech API dla plików audio w różnych językach

Czego potrzebujesz

  • Projekt Google Cloud Platform
  • przeglądarka, np. Chrome lub Firefox;

Jak zamierzasz wykorzystać ten samouczek?

Tylko przeczytaj Przeczytaj i wykonaj ćwiczenia

Jak oceniasz korzystanie z Google Cloud Platform?

Początkujący Średnio zaawansowany Zaawansowany

Samodzielne konfigurowanie środowiska

Jeśli nie masz jeszcze konta Google (Gmail lub Google Apps), musisz je utworzyć. Zaloguj się w konsoli Google Cloud Platform (console.cloud.google.com) i utwórz nowy projekt:

Screenshot from 2016-02-10 12:45:26.png

Zapamiętaj identyfikator projektu, czyli unikalną nazwę we wszystkich projektach Google Cloud (podana powyżej nazwa jest już zajęta i nie będzie działać w Twoim przypadku). W dalszej części tego laboratorium będzie on nazywany PROJECT_ID.

Następnie musisz włączyć płatności w konsoli Cloud, aby móc korzystać z zasobów Google Cloud.

Wykonanie tego samouczka nie powinno kosztować więcej niż kilka dolarów, ale może okazać się droższe, jeśli zdecydujesz się wykorzystać więcej zasobów lub pozostawisz je uruchomione (patrz sekcja „Czyszczenie” na końcu tego dokumentu).

Nowi użytkownicy Google Cloud Platform mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.

Kliknij ikonę menu w lewym górnym rogu ekranu.

W menu wybierz panel Interfejsy API i usługi .

Kliknij Włącz interfejsy API i usługi.

Następnie w polu wyszukiwania wpisz „mowa”. Kliknij Google Cloud Speech API:

Aby włączyć Cloud Speech API, kliknij Włącz:

Odczekaj kilka sekund, aż się włączy. Gdy ta funkcja będzie włączona, zobaczysz:

Google Cloud Shell to środowisko wiersza poleceń działające w chmurze. Ta maszyna wirtualna oparta na Debianie zawiera wszystkie potrzebne narzędzia dla programistów (gcloud, bq, git i inne) i oferuje trwały katalog domowy o pojemności 5 GB. Do utworzenia żądania do Speech API użyjemy Cloud Shell.

Aby rozpocząć korzystanie z Cloud Shell, kliknij ikonę „Aktywuj Google Cloud Shell” Screen Shot 2015-06-08 at 5.30.32 PM.png w prawym górnym rogu paska nagłówka.

Sesja Cloud Shell otworzy się w nowej ramce u dołu konsoli, zostanie również wyświetlony monit wiersza poleceń. Poczekaj, aż pojawi się prompt user@project:~$

Ponieważ w celu wysłania żądania do interfejsu Speech API będziesz korzystać z narzędzia curl, musisz wygenerować klucz interfejsu API, aby przekazać go w URL żądania. Aby utworzyć klucz interfejsu API, przejdź do sekcji Interfejsy API i usługi > Dane logowania w panelu projektu:

Następnie kliknij Utwórz dane logowania:

Z menu wybierz Klucz interfejsu API:

Następnie skopiuj wygenerowany klucz i wybierz Zamknij (nie ograniczaj klucza).

Po utworzeniu klucza interfejsu API należy zapisać go jako zmienną środowiskową, dzięki czemu unikniesz wprowadzania jego wartości przy każdym żądaniu. Możesz to zrobić w Cloud Shell. Pamiętaj, aby zastąpić <your_api_key> skopiowanym właśnie kluczem.

export API_KEY=<YOUR_API_KEY>

Możesz utworzyć żądanie do interfejsu Speech API w pliku request.json. Aby utworzyć i edytować ten plik, możesz użyć preferowanego edytora wiersza poleceń (nano, vim, emacs) lub edytora wbudowanego w Cloud Shell:

Utwórz plik w katalogu głównym, aby móc się do niego łatwo odwoływać, i dodaj do pliku request.json te informacje :

request.json

{
  "config": {
      "encoding":"FLAC",
      "languageCode": "en-US"
  },
  "audio": {
      "uri":"gs://cloud-samples-tests/speech/brooklyn.flac"
  }
}

W treści żądania znajdują się obiekty config i audio. Dzięki obiektowi config informujemy interfejs Speech API o tym, jak ma przetworzyć żądanie. Parametr encoding przekazuje interfejsowi API informacje o typie kodowania audio używanego w pliku audio przesyłanym do interfejsu API. FLAC to typ kodowania dla plików RAW (więcej informacji o typach kodowania znajdziesz w dokumentacji). Istnieją też inne parametry, które można dodać do obiektu config, ale parametr encoding jest jedynym wymaganym. Jeśli nie określisz w żądaniu parametru languageCode, domyślnie zostanie on ustawiony na język angielski.

W obiekcie audio możesz przekazać do interfejsu API identyfikator URI pliku audio w Cloud Storage lub dźwięk zakodowany w formacie base64 jako ciąg znaków. Tutaj użyliśmy adresów URL do Cloud Storage. Następnym krokiem jest wywołanie interfejsu Speech API.

Teraz możesz przekazać do interfejsu Speech API treść żądania wraz z zapisaną wcześniej zmienną środowiskową klucza interfejsu API. Użyj następującego polecenia curl (umieść wszystko w jednym wierszu poleceń):

curl -s -X POST -H "Content-Type: application/json" --data-binary @request.json "https://speech.googleapis.com/v1/speech:recognize?key=${API_KEY}"

Odpowiedź zwrócona przez to polecenie curl powinna wyglądać mniej więcej tak:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "how old is the Brooklyn Bridge",
          "confidence": 0.98267895
        }
      ]
    }
  ]
}

Wartość transcript zwróci transkrypcję Twojego pliku audio wygenerowaną przez interfejs Speech API, natomiast wartość confidence pokazuje, w jakim stopniu interfejs API jest pewny poprawności transkrypcji Twojego pliku.

W naszym żądaniu powyżej wywołaliśmy metodę recognize. Interfejs Speech API obsługuje zarówno synchroniczną, jak i asynchroniczną transkrypcję związaną z zamianą mowy na tekst. W tym przykładzie wysłaliśmy kompletny plik audio, ale możesz też użyć metody longrunningrecognize, aby zamieniać mowę na tekst podczas strumieniowego przesyłania danych (gdy użytkownik mówi).

Znasz kilka języków? Interfejs Speech API obsługuje transkrypcję mowy na tekst w ponad 100 językach. Parametr languageCode możesz zmienić w pliku request.json. Listę obsługiwanych języków znajdziesz tutaj.

Wypróbujmy francuski plik audio (jeśli chcesz, możesz go odsłuchać tutaj). Zmień plik request.json na taki:

request.json

 {
  "config": {
      "encoding":"FLAC",
      "languageCode": "fr"
  },
  "audio": {
      "uri":"gs://speech-language-samples/fr-sample.flac"
  }
}

Powinna pojawić się taka odpowiedź:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "maître corbeau sur un arbre perché tenait en son bec un fromage",
          "confidence": 0.9710122
        }
      ]
    }
  ]
}

To zdanie z popularnej francuskiej baśni dla dzieci. Jeśli masz pliki audio w innym języku, możesz dodać je do Cloud Storage i zmienić w żądaniu parametr languageCode.

Wiesz już, jak wykonać transkrypcję mowy na tekst za pomocą interfejsu Speech API. W tym przykładzie przekazaliśmy do interfejsu API identyfikator URI pliku audio w Google Cloud Storage. Zamiast tego możesz przekazać zawartość pliku audio w formie tekstu zakodowanego w formacie base64.

Omówione zagadnienia

  • Przekazywanie identyfikatora URI pliku audio w Google Cloud Storage do interfejsu Speech API
  • Tworzenie żądania do interfejsu Speech API i wywoływanie tego interfejsu za pomocą polecenia curl
  • Wywoływanie interfejsu Speech API dla plików audio w różnych językach

Dalsze kroki