Google Dokümanlar'ı kullanarak iş toplantılarınızın transkriptini oluşturun. Makine Öğrenimi

1. Genel Bakış

Bu codelab'de, Google Cloud Speech to Text API üzerinden ses dosyasını nasıl göndereceğinizi ve ardından transkriptin çıktısını bir Google Dokümanı'na nasıl çıkaracağınızı öğreneceksiniz. Kolayca kullanılabilen Speech to Text API, geliştiricilerin sesi metne dönüştürmesini sağlamak için güçlü nöral ağlar kullanır. Ayrıca, makine öğrenimi tarafından desteklenmektedir.

Yeni bir doküman oluşturmak ve dokümana yazmak için Google Docs API'yi kullanırsınız. Java komut satırı uygulaması oluşturup gradle derleme sistemini kullanarak kodunuzu çalıştıracak, ardından sonuçlarınızı görüntülemek için Docs API'yi kullanacaksınız.

Neler öğreneceksiniz?

  • Google Cloud Speech to Text API'yi kullanma
  • Yeni bir doküman oluşturmak için Google Docs API'yi kullanma
  • Dokümana yazmak için Docs API'yi kullanma

Gerekenler

  • Java yüklü (sürüm 7 veya sonraki sürümler)
  • Gradle yüklendi (5. veya sonraki sürümler)
  • İnternete ve web tarayıcısına erişim
  • Google Hesabı
  • Bir Google Cloud Platform projesi

2. Projenizi oluşturun

Bulut projenizi oluşturma

  1. Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. (Gmail veya Workspace hesabınız yoksa hesap oluşturmanız gerekir.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Tüm Google Cloud projelerinde benzersiz bir ad olan proje kimliğini unutmayın (yukarıdaki ad zaten alınmış ve size uygun olmayacaktır!). Bu kod laboratuvarın ilerleyen bölümlerinde PROJECT_ID olarak adlandırılacaktır.

  1. Sonraki adımda, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.

Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. "Temizleme" bölümündeki talimatları izlediğinizden emin olun. bölümünde, bu eğiticinin dışında faturalandırmayla karşılaşmamanız için kaynakları nasıl kapatacağınız konusunda tavsiyelerde bulunuyoruz. Yeni Google Cloud kullanıcıları 300 ABD doları ücretsiz deneme programından yararlanabilir.

Cloud Speech-to-Text API için hizmet hesabı anahtarı alma

60f112dedc208681.png

  1. GCP Console'a gidin ve yeni projenizi bulun
  2. Hizmet hesabı oluşturma
  3. Hizmet hesabı anahtarını JSON olarak indirin
  4. GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini, hizmet hesabı anahtarınızı içeren JSON dosyasının dosya yoluna ayarlayın. Kabuk oturumunuzu yeniden başlatırsanız değişkeni tekrar ayarlamanız gerekir.
$ export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"

Örneğin:

$ export GOOGLE_APPLICATION_CREDENTIALS="/home/usr/downloads/ServiceAccount.json"

Docs API için Kimlik Bilgisi Alma

  1. GCP konsolunda Kimlik bilgileri'ne gidin.
  2. Bir OAuth 2.0 anahtarı oluşturun ve JSON olarak indirin
  3. credentials.json dosyasını yeniden adlandırın ve kodunuzun src/main/resources/ dizininde bulunduğundan emin olun.

API'leri etkinleştir

3066cf79c136a078.png

  1. Kontrol Paneli sekmesini seçin, API'leri ve Hizmetleri Etkinleştir düğmesini tıklayın ve aşağıdaki 2 API'yi etkinleştirin:
  2. Konuşmayı Metne Dönüştürme
  3. Google Dokümanlar

846ba54aa7e1e584.png

Artık kodunuzla çalışmaya başlayabilirsiniz.

3. Kodunuzu ayarlama

Örnek kodu alın

Örnek kodu almak için ZIP dosyasını bilgisayarınıza indirin...

...veya GitHub deposunu komut satırından klonlayın.

$ git clone git@github.com:googleworkspace/docs-transcript-codelab.git

start dizinindeki CreateTranscript.java dosyası üzerinde çalışacaksınız. Gradle dosyaları değiştirilmemelidir.

Dizininizde start klasörüne gidin ve CreateTranstranskript.java dosyasını açın. Aşağı kaydırarak CreateTranscript sınıf beyanını görün.

public class CreateTranscript {
  private static final String CREDENTIALS_FILE_PATH = "/credentials.json";
  
  // Specify audio file name below.
  private static final String AUDIO_FILENAME = "audioFile.wav";
  private static final String TOKENS_DIRECTORY_PATH = "tokens";
  private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
  private static final String APPLICATION_NAME = "CreateTranscript";
  private static final List<String> SCOPES = Collections.singletonList(DocsScopes.DOCUMENTS);

SCOPES değişkeniniz için, kodunuzun kullanıcınızın Google Dokümanlar dokümanlarını görüntüleyip yönetebileceğini belirttiniz. Kodunuz bu erişimden başka veya bu erişimden farklı bir yetkilendirme gerektiriyorsa bu değişkeni OAuth 2.0 Google API kapsamlarına göre ayarladığınızdan emin olun.

Örneğin, bir Google Dokümanı'na yazmadıysanız kapsamı DOCUMENTS_READONLY olarak değiştirebilirsiniz. SCOPES değişkeni yalnızca uygulamanızın uygun erişim izinlerine sahip olması için değil, kullanıcı açısından şeffaflığın korunması için de gereklidir. Kullanıcının, uygulamanın kullanılmasına izin vermesi gereken OAuth doğrulama sayfasında istediğiniz kapsamlar gösterilir.

Değişkenleri Yeniden Adlandırma

Yukarıdaki değişkenlerin projeniz için doğru şekilde belirtildiğinden emin olun.

  1. AUDIO_FILENAME dosyasının, Speech to Text API'ye gönderdiğiniz demo dosyasının adına ayarlandığından emin olun. CreateTranscript.java dosyanızda, dosyanın doğru bir şekilde ayarlanmış olduğunu görüyor olmanız gerekir.
  2. CREDENTIALS_FILE_PATH yolunu indirilen kimlik bilgileri dosyasının adıyla değiştirin ("/credentials.json'" olmalıdır). Bu dosyanın, klasörünüzün src/main/resources dizininde olduğundan emin olun. Bu nedenle, GitHub klonlaması işlemi sizin yerinize yapmıyorsa bu dizini oluşturmayı da unutmayın.

Artık kodunuzu çalıştırmaya başlayabilirsiniz.

4. Dokümanlar istemcisini başlatma

CreateTranscript.java dosyasında, ana yöntem bildirimini bulun ve içindekilere göz atın:

final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
Docs service = new Docs.Builder(HTTP_TRANSPORT, JSON_FACTORY,
    getCredentials(HTTP_TRANSPORT))
          .setApplicationName(APPLICATION_NAME)
          .build();

İşlev Yetkilendirmesi

Burada gerçekleştirdiğiniz ilk görev Docs service (değişken) öğesinin oluşturulmasıdır. Hizmet, kimlik bilgilerinizi ve bu örnekte son kullanıcı kimlik doğrulamanızı elinde bulunduran yetkili bir API istemcisini temsil eder.

Kodunuzda, Docs API'ye çağrı yapan tüm işlevlerin, Dokümanlar ile ilgili görevleri gerçekleştirmek için bu service değişkenini kullanması gerekir.

5. Google Dokümanı oluşturma

Belirtilen başlığa sahip yeni bir Google Dokümanı oluşturacaksınız. Şimdi aşağıdaki kodu createDocument işlevine kopyalayalım.

Document doc = new Document().setTitle("Transcript for " +
    AUDIO_FILENAME);
doc = service.documents().create(doc).execute();
String documentId = doc.getDocumentId();
return documentId;

Bu işlev, Google Dokümanı'nın Drive Dosya Kimliğini döndürür. Aynı kimlik Dokümanın URL'sinde bulunabilir.

Ardından, Speech-to-Text istemcisini başlatacaksınız.

6. Speech to Text API'yi çağırma

Kodunuzda gerçekleştirmek istediğiniz bir sonraki görev, ses dosyası için yazılı transkripti elde etmektir. CreateTranscript.java dosyasının içinde getTranscript() işlevini bulun.

Öncelikle, ses dosyasının yolunu ve ses baytlarını alın:

SpeechClient speech = SpeechClient.create();
Path path = Paths.get(AUDIO_FILENAME);
byte[] data = Files.readAllBytes(path);
ByteString audioBytes = ByteString.copyFrom(data);

Konuşma Tanıma'yı yapılandırın

Ardından, RecognitionConfig değişkenini doğru şekilde ilk kullanıma hazırlamanız gerekir.

Burada config, konuşma tanıyıcınızın isteğinizi tam olarak nasıl işlemesi gerektiğiyle ilgili bilgi sağlar. Örneğin, ses dosyanız İngilizce dışında bir dildeyse setLanguageCode() öğesini düzenlemeniz ve ses dosyanız Hertz'de farklı bir örnek hızına sahipse (en uygunu 1600) setSampleRateHertz() değerini değiştirmeniz gerekir.

RecognitionConfig config =
    RecognitionConfig.newBuilder()
        .setEncoding(AudioEncoding.LINEAR16)
        .setLanguageCode("en-US")
        .setSampleRateHertz(8000)
        .build();
RecognitionAudio audio =
    RecognitionAudio.newBuilder().setContent(audioBytes).build();
RecognizeResponse response = speech.recognize(config, audio);
List<SpeechRecognitionResult> results = response.getResultsList();

Metin Hazırlanıyor

Son olarak, ses dosyasının transkript result değişkenini tutun ve bir dokümana eklenmek üzere hazırlayın.

Sonuçlardaki her öğe, SpeechRecognitionAlternatives türünde bir transkripttir. Bu nedenle her öğe iki bölüm içerir: bir metin transkripti ve API'nin ilgili güven puanı.

List<Request> requests = new ArrayList<>();
for (SpeechRecognitionResult result : results) {
     // Using the first + most likely alternative transcript
     SpeechRecognitionAlternative alternative =
         result.getAlternativesList().get(0);
     String toInsert = alternative.getTranscript();

     // Add requests array list to return.
     requests.add(
         new Request()
             .setInsertText(
                 new InsertTextRequest()
                     .setText(toInsert)
                     .setEndOfSegmentLocation(new
     EndOfSegmentLocation().setSegmentId(""))));
}
return requests;

7. Dokümana metin ekleme

Şimdi transkript metnini Google Dokümanına ekleyeceksiniz. Dokümanda değişiklik yapmak için BatchUpdate yöntemini kullanmanız gerekir. BatchUpdate, farklı yazma isteği türlerine yönelik bir kapsayıcıdır. Burada InsertTextRequest değerini kullanacaksınız.

EndOfSegmentLocation, dokümanınızda metninizi nereye yazdırmak istediğinizi belirten önemli bir parametredir. Kaynak kodunda, Dokümanınızın gövdesine metin ekliyorsunuz.

Dokümanlar API'sine yapılan çağrılarla birlikte, Speech-to-Text API sonuçlarınızın bir ses dosyasının transkriptini bir Google Dokümanına eklememize nasıl olanak tanıyabileceğini görmek için aşağıdaki kodu işlevinize ekleyelim:

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest();
service.documents().batchUpdate(docId,
    body.setRequests(insertRequests)).execute();

İsteği oluşturma

BatchUpdate isteğinde bulunurken çok önemli iki özellik belirlersiniz: Yazdırmak istediğiniz şey (.setText()) ve bunu yapmak istediğiniz belgenin konumu (.setIndex(1)).

Artık ses dosyanızın transkriptini oluşturduğunuz dokümana eklediniz.

8. Kodu çalıştırma

Artık bir ses dosyasını almak, transkriptini edinmek ve transkriptin transkriptini yeni oluşturulan bir Google Dokümanı'na yazdırmak için ihtiyacınız olan tüm kodlara sahip olduğunuza göre, şimdi bu programı birlikte başlatalım!

Java kodunuzu gradle derleme sistemini kullanarak çalıştıracağınız için build.gradle dosyanıza tam olarak neyin derlenip çalıştırılacağını bildirmeniz gerekir. Bu projede ve diğer projelerde mainClassName öğesinin, çalıştırmak istediğiniz Java sınıfıyla tutarlı olduğundan emin olun.

Çok güzel! Artık kodunuzu çalıştırmaya hazırsınız. Bunu yapmak için komut satırınıza aşağıdakileri yazın:

$ gradle run

Son kullanıcı kimlik doğrulaması

Bu kodu ilk kez çalıştırdığınızda terminalde bir URL yazdırılır ve sizden hizmet hesabınıza giriş yapmanız ve hesabın Google Dokümanlar'ına erişim için yetki vermeniz istenir. Erişime izin verdikten sonra dizininizde yeni bir dosya depolandığını görürsünüz.

Çalışma dizininizin içinde, tokens adında yeni oluşturulmuş ve StoredCredential dosyasını içeren bir klasör göreceksiniz. Bu, az önce sağladığınız, istemcinizin Google Kimlik Doğrulama Sunucusu'ndan istediği, yanıtından çıkardığı ve artık çağrı yaptığınız tüm API'lere gönderilecek kimlik doğrulama jetonudur.

Çözüm

Kodunuz çalışmıyorsa CreateTranscript.java klasöründeki CreateTranscript.java dosyasının içine bakın. Bu dosyada, başarılı bir şekilde çalıştırılmak için gereken tüm kodlar tam olarak aynı olması gerekir.

Şimdi sonuca bakalım.

9. Sonuçlarınızı görüntüleme

Ses dosyanızın transkriptini içeren yeni bir Google Dokümanı oluşturdunuz. Şimdi buna göz atalım.

Bu doküman, son kullanıcının yetki verdiği hesap aracılığıyla oluşturuldu. Olası genişletmelerden biri, Drive API'yi kullanarak bu Dokümanı başkalarıyla otomatik olarak paylaşabilmenizdir.

Kaynak kodunuzu ve sağlanan ses dosyasını kullandığınızda şunları görürsünüz:

ee73fcdd1dbcdcff.png

10. Tebrikler!

Google Dokümanı oluşturmayı, Speech-to-Text API'ye çağrı yapmayı ve ses dosyanızın transkriptini oluşturduğunuz dokümana nasıl aktaracağınızı öğrendiniz.

Olası İyileştirmeler

Aşağıda, daha etkili bir entegrasyonun nasıl gerçekleştirileceğine ilişkin bazı fikirler yer almaktadır:

  • Google Cloud Storage paket Drive'ınıza bir ses dosyası eklendiğinde dinlenecek şekilde kodunuzu ayarlayın ve bu kodu yürütmesi için bir Google Cloud Functions işlevini tetikleyin.
  • Bir Google Dokümanı'na boş olmayan metinler ekleyerek çeşitli denemeler yapın

Daha Fazla Bilgi