Speech-to-Text API'yi C# ile kullanma

Speech-to-Text API'yi C# ile kullanma

Bu codelab hakkında

subjectSon güncelleme Haz 26, 2023
account_circleYazan: Mete Atamel

1. Genel Bakış

Google Cloud Speech-to-Text API, kullanımı kolay API ile güçlü nöral ağ modelleri uygulayarak geliştiricilerin 120 dil ve lehçede sesi metne dönüştürmesini sağlar.

Bu codelab'de, Speech-to-Text API'yi C# ile kullanmaya odaklanacaksınız. İngilizce ve diğer dillerde ses dosyalarını metne dönüştürmek için Cloud Speech-to-Text API'ye nasıl göndereceğinizi öğreneceksiniz.

Neler öğreneceksiniz?

  • Cloud Shell'i kullanma
  • Speech-to-Text API'yi etkinleştirme
  • API isteklerinin kimliğini doğrulama
  • C# için Google Cloud istemci kitaplığını yükleme
  • İngilizce ses dosyalarını metne dönüştürme
  • Ses dosyalarını kelime zaman damgalarıyla metne dönüştürme
  • Farklı dillerdeki ses dosyalarını metne dönüştürme

Gerekenler

  • Bir Google Cloud Platform Projesi
  • Chrome veya Firefox gibi bir tarayıcı
  • C# kullanımı hakkında bilgi

Anket

Bu eğiticiden nasıl yararlanacaksınız?

C# ile ilgili deneyiminizi nasıl değerlendirirsiniz?

Google Cloud Platform hizmetlerinin kullanımıyla ilgili deneyiminizi nasıl değerlendirirsiniz?

2. Kurulum ve Gereksinimler

Kendi hızınızda ortam kurulumu

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

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. İstediğiniz zaman güncelleyebilirsiniz.
  • Proje Kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de proje kimliğinizi (genellikle PROJECT_ID olarak tanımlanır) belirtmeniz gerekir. Oluşturulan kimliği beğenmezseniz rastgele bir kimlik daha oluşturabilirsiniz. Alternatif olarak, kendi ölçümünüzü deneyip mevcut olup olmadığına bakabilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince kalır.
  • Bilginiz olması açısından, bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Sonraki adımda, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırmanın tekrarlanmasını önlemek amacıyla kaynakları kapatmak için oluşturduğunuz kaynakları silebilir veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.

Cloud Shell'i başlatma

Google Cloud dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.

Cloud Shell'i etkinleştirme

  1. Cloud Console'da, Cloud Shell'i etkinleştir d1264ca30785e435.png simgesini tıklayın.

cb81e7c8e34bc8d.png

Cloud Shell'i ilk kez başlatıyorsanız ne olduğunu açıklayan bir ara ekran gösterilir. Ara bir ekran görüntülendiyse Devam'ı tıklayın.

d95252b003979716.png

Temel hazırlık ve Cloud Shell'e bağlanmak yalnızca birkaç dakika sürer.

7833d5e1c5d18f54.png

Gereken tüm geliştirme araçları bu sanal makinede yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Bu codelab'deki çalışmalarınızın tamamı olmasa bile büyük bir kısmı tarayıcıyla yapılabilir.

Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin proje kimliğinize ayarlandığını göreceksiniz.

  1. Kimlik doğrulamanızın tamamlandığını onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud auth list

Komut çıkışı

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud komutunun projenizi bildiğini onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud config list project

Komut çıkışı

[core]
project = <PROJECT_ID>

Doğru değilse aşağıdaki komutla ayarlayabilirsiniz:

gcloud config set project <PROJECT_ID>

Komut çıkışı

Updated property [core/project].

3. Speech-to-Text API&#39;yi etkinleştirme

Speech-to-Text API'yi kullanmaya başlamadan önce API'yi etkinleştirmeniz gerekir. Cloud Shell'de aşağıdaki komutu kullanarak API'yi etkinleştirebilirsiniz:

gcloud services enable speech.googleapis.com

4. C# için Google Cloud Speech-to-Text API istemci kitaplığını yükleme

Öncelikle, Speech-to-Text API örneklerini çalıştırmak için kullanacağınız basit bir C# konsol uygulaması oluşturun:

dotnet new console -n SpeechToTextApiDemo

Uygulamanın oluşturulduğunu ve bağımlılıkların çözüldüğünü göreceksiniz:

The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.

Sonra, SpeechToTextApiDemo klasörüne gidin:

cd SpeechToTextApiDemo/

Ardından projeye Google.Cloud.Speech.V1 NuGet paketini ekleyin:

dotnet add package Google.Cloud.Speech.V1
info : Adding PackageReference for package 'Google.Cloud.Speech.V1' into project '/home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj'.
log  
: Restoring packages for /home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj...
...
info
: PackageReference for package 'Google.Cloud.Speech.V1' version '1.0.1' added to file '/home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj'.

Artık Speech-to-Text API'yi kullanmaya hazırsınız.

5. Ses Dosyalarını Metne Dönüştürme

Bu bölümde, önceden kaydedilmiş bir ses dosyasını İngilizce dilinde metne dönüştüreceksiniz. Ses dosyası, Google Cloud Storage'da kullanılabilir.

Bir ses dosyasını metne dönüştürmek için Cloud Shell'in sağ üst tarafından kod düzenleyiciyi açın:

fd3fc1303e63572.png

SpeechToTextApiDemo klasörünün içindeki Program.cs dosyasına gidin ve kodu aşağıdakiyle değiştirin:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
   
public class Program
   
{
       
public static void Main(string[] args)
       
{
           
var speech = SpeechClient.Create();
           
var config = new RecognitionConfig
           
{
               
Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
               
SampleRateHertz = 16000,
               
LanguageCode = LanguageCodes.English.UnitedStates
           
};
           
var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-tests/speech/brooklyn.flac");        
           
           
var response = speech.Recognize(config, audio);

           
foreach (var result in response.Results)
           
{
               
foreach (var alternative in result.Alternatives)
               
{
                   
Console.WriteLine(alternative.Transcript);
               
}
           
}
       
}
   
}
}

Bir veya iki dakikanızı ayırarak kodu inceleyin ve kodun bir ses dosyasında metne dönüştürmek için kullanıldığını görün*.*

Encoding parametresi, ses dosyası için hangi ses kodlaması türünü kullandığınızı API'ye bildirir. Flac, .raw dosyaları için kullanılan kodlama türüdür (Ayrıntılı bilgi için belgeye göz atın).

RecognitionAudio nesnesinde, API'ye Cloud Storage'daki ses dosyamızın URI'sını veya ses dosyasının yerel dosya yolunu iletebilirsiniz. Burada Cloud Storage URI'si kullanıyoruz.

Cloud Shell'e dönüp uygulamayı çalıştırın:

dotnet run

Aşağıdaki çıkışı göreceksiniz:

how old is the Brooklyn Bridge

Özet

Bu adımda, bir ses dosyasını İngilizce dilinde metne dönüştürüp sonucu yazdırabildiniz. Metne dönüştürme hakkında daha fazla bilgi edinin.

6. Kelime zaman damgalarıyla metne dönüştürme

Speech-to-Text, metne dönüştürülen sesin zaman farkını (zaman damgası) algılayabilir. Zaman ofsetleri, sağlanan seste söylenen her kelimenin başını ve sonunu gösterir. Zaman farkı değeri, sesin başlangıcından itibaren geçen süreyi 100 ms'lik artışlarla temsil eder.

Bir ses dosyasını zaman ofsetleriyle metne dönüştürmek için SpeechToTextApiDemo klasörünün içindeki Program.cs dosyasına gidin ve kodu aşağıdaki kodla değiştirin:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
   
public class Program
   
{
       
public static void Main(string[] args)
       
{
           
var speech = SpeechClient.Create();
           
var config = new RecognitionConfig
           
{
               
Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
               
SampleRateHertz = 16000,
               
LanguageCode = LanguageCodes.English.UnitedStates,
               
EnableWordTimeOffsets = true
           
};
           
var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-tests/speech/brooklyn.flac");
     
           
var response = speech.Recognize(config, audio);

           
foreach (var result in response.Results)
           
{
               
foreach (var alternative in result.Alternatives)
               
{
                   
Console.WriteLine($"Transcript: { alternative.Transcript}");
                   
Console.WriteLine("Word details:");
                   
Console.WriteLine($" Word count:{alternative.Words.Count}");
                   
foreach (var item in alternative.Words)
                   
{
                       
Console.WriteLine($"  {item.Word}");
                       
Console.WriteLine($"    WordStartTime: {item.StartTime}");
                       
Console.WriteLine($"    WordEndTime: {item.EndTime}");
                   
}
               
}
           
}
       
}
   
}
}

Bir veya iki dakikanızı ayırarak kodu inceleyin. Kodun, ses dosyalarında kelime zaman damgalarını* içeren metne dönüştürüldüğünden emin olun.* EnableWordTimeOffsets parametresi, API'ye zaman farkını etkinleştirmesini bildirir (daha fazla bilgi için belgeye bakın).

Cloud Shell'e dönüp uygulamayı çalıştırın:

dotnet run

Aşağıdaki çıkışı göreceksiniz:

dotnet run

Transcript: how old is the Brooklyn Bridge
Word details:
 
Word count:6
  how
   
WordStartTime: "0s"
   
WordEndTime: "0.300s"
  old
   
WordStartTime: "0.300s"
   
WordEndTime: "0.600s"
 
is
   
WordStartTime: "0.600s"
   
WordEndTime: "0.800s"
  the
   
WordStartTime: "0.800s"
   
WordEndTime: "0.900s"
 
Brooklyn
   
WordStartTime: "0.900s"
   
WordEndTime: "1.100s"
 
Bridge
   
WordStartTime: "1.100s"
   
WordEndTime: "1.500s"

Özet

Bu adımda, İngilizce bir ses dosyasını kelime zaman damgalarıyla birlikte metne dönüştürüp sonucu yazdırabildiniz. Farklı sözcük kullanarak metne dönüştürme hakkında daha fazla bilgi edinin.

7. Farklı dilleri metne dönüştürün

Speech-to-Text API, 100'ü aşkın dilde metne dönüştürme özelliğini destekler. Desteklenen dillerin listesini burada bulabilirsiniz.

Bu bölümde, önceden kaydedilmiş bir ses dosyasını Fransızca konuşmayı metne dönüştüreceksiniz. Ses dosyası, Google Cloud Storage'da kullanılabilir.

Fransızca ses dosyasını metne dönüştürmek için SpeechToTextApiDemo klasöründeki Program.cs dosyasına gidin ve kodu aşağıdaki kodla değiştirin:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
   
public class Program
   
{
       
public static void Main(string[] args)
       
{
           
var speech = SpeechClient.Create();
           
var config = new RecognitionConfig
           
{
               
Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
               
LanguageCode = LanguageCodes.French.France
           
};
           
var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-data/speech/corbeau_renard.flac");

           
var response = speech.Recognize(config, audio);

           
foreach (var result in response.Results)
           
{
               
foreach (var alternative in result.Alternatives)
               
{
                   
Console.WriteLine(alternative.Transcript);
               
}
           
}
       
}
   
}
}

Bir veya iki dakikanızı ayırarak kodu inceleyin ve kodun bir ses dosyasında nasıl metne dönüştürüldüğünü öğrenin*.* LanguageCode parametresi, API'ye ses kaydının dilini bildirir.

Cloud Shell'e dönüp uygulamayı çalıştırın:

dotnet run

Aşağıdaki çıkışı göreceksiniz:

maître corbeau sur un arbre perché tenait en son bec un fromage

Bu cümle, popüler bir Fransız çocuk öyküsünden alınmıştır.

Özet

Bu adımda, bir ses dosyasını Fransızca dilinde metne dönüştürebildiniz ve sonucu yazdırabildiniz. Desteklenen diller hakkında daha fazla bilgi edinin.

8. Tebrikler!

Ses dosyalarında farklı türde metne dönüştürme işlemleri gerçekleştirmek için C# kullanarak Speech-to-Text API'yi nasıl kullanacağınızı öğrendiniz.

Temizleme

Bu hızlı başlangıçta kullanılan kaynaklar için Google Cloud Platform hesabınızın ücretlendirmesini önlemek amacıyla:

  • Cloud Platform Console'a gidin.
  • Kapatmak istediğiniz projeyi seçin, ardından "Sil"i tıklayın üstte üstte yer alır: Bu işlem, projeyi silinmek üzere programlar.

Daha Fazla Bilgi

Lisans

Bu çalışma, Creative Commons Attribution 2.0 Genel Amaçlı Lisans ile lisans altına alınmıştır.