1. Genel Bakış
Google Cloud Speech-to-Text API, kullanımı kolay bir 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 Node.js ile kullanmaya odaklanacaksınız. İngilizce ve diğer dillerdeki ses dosyalarını transkripsiyon için Cloud Speech-to-Text API'ye nasıl göndereceğinizi öğreneceksiniz.
Neler öğreneceksiniz?
- Speech-to-Text API'yi etkinleştirme
- API isteklerinin kimliğini doğrulama
- Node.js 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
- Google Cloud Platform projesi
- Chrome veya Firefox gibi bir tarayıcı
- JavaScript/Node.js kullanma konusunda bilgi sahibi olma
Anket
Bu eğitimi nasıl kullanacaksınız?
Node.js ile ilgili deneyiminizi nasıl değerlendirirsiniz?
Google Cloud Platform hizmetlerini kullanma deneyiminizi nasıl değerlendirirsiniz?
2. Kurulum ve Gereksinimler
Yönlendirmesiz ortam kurulumu
- Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. (Gmail veya G Suite hesabınız yoksa hesap oluşturmanız gerekir.)
Proje kimliğini unutmayın. Bu kimlik, tüm Google Cloud projelerinde benzersiz bir addır (Yukarıdaki ad zaten alınmış olduğundan sizin için çalışmayacaktır). Bu codelab'in ilerleyen kısımlarında PROJECT_ID olarak adlandırılacaktır.
- Ardından, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.
Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları nasıl kapatacağınız konusunda size tavsiyelerde bulunan "Temizleme" bölümündeki talimatları uyguladığınızdan emin olun. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.
Cloud Shell'i başlatma
Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak 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
- Cloud Console'da Cloud Shell'i etkinleştir 'i
tıklayın.
Cloud Shell'i daha önce hiç başlatmadıysanız ne olduğunu açıklayan bir ara ekran (ekranın alt kısmı) gösterilir. Bu durumda Devam'ı tıkladığınızda bu ekranı bir daha görmezsiniz. Bu tek seferlik ekran aşağıdaki gibi görünür:
Cloud Shell'in temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır.
Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin bulunur ve Google Cloud'da çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki çalışmalarınızın neredeyse tamamını yalnızca bir tarayıcı veya Chromebook'unuzla yapabilirsiniz.
Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin, proje kimliğinize ayarlandığını görürsünüz.
- Kimliğinizin doğrulandığını onaylamak için Cloud Shell'de şu 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`
gcloud config list project
Komut çıkışı
[core] project = <PROJECT_ID>
Değilse şu komutla ayarlayabilirsiniz:
gcloud config set project <PROJECT_ID>
Komut çıkışı
Updated property [core/project].
3. Speech-to-Text API'yi etkinleştirme
Speech-to-Text API'yi kullanmaya başlamadan önce API'yi etkinleştirmeniz gerekir. API'yi Cloud Shell'de aşağıdaki komutu kullanarak etkinleştirebilirsiniz:
gcloud services enable speech.googleapis.com
4. API isteklerinin kimliğini doğrulama
Speech-to-Text API'ye istekte bulunmak için hizmet hesabı kullanmanız gerekir. Hizmet hesabı, projenize aittir ve Google Client Node.js kitaplığı tarafından Speech-to-Text API istekleri göndermek için kullanılır. Diğer tüm kullanıcı hesapları gibi, hizmet hesabı da bir e-posta adresiyle temsil edilir. Bu bölümde, hizmet hesabı oluşturmak için Cloud SDK'yı kullanacak, ardından hizmet hesabı olarak kimlik doğrulamak için gereken kimlik bilgilerini oluşturacaksınız.
Öncelikle, bu codelab boyunca kullanacağınız PROJECT_ID'nizle bir ortam değişkeni ayarlayın. Cloud Shell kullanıyorsanız bu değişken sizin için ayarlanır:
export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)
Ardından, Speech-to-Text API'ye erişmek için yeni bir hizmet hesabı oluşturun:
gcloud iam service-accounts create my-speech-to-text-sa \
--display-name "my speech-to-text codelab service account"
Ardından, Node.js kodunuzun yeni hizmet hesabınız olarak giriş yapmak için kullanacağı kimlik bilgilerini oluşturun. Bu kimlik bilgilerini oluşturduktan sonra aşağıdaki komut aracılığıyla bir JSON dosyası ~/key.json olarak kaydedin:
gcloud iam service-accounts keys create ~/key.json \
--iam-account my-speech-to-text-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
Son olarak, kimlik bilgilerinizi bulmak için bir sonraki adımda ele alınan Speech-to-Text API Node.js kitaplığı tarafından kullanılan GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini ayarlayın. Ortam değişkeni, oluşturduğunuz kimlik bilgisi JSON dosyasının tam dizin yoluna göre ayarlanmalıdır. Bunun için:
export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"
Speech-to-Text API'nin kimliğini doğrulama hakkında daha fazla bilgi edinebilirsiniz.
5. Node.js için Google Cloud Speech-to-Text API istemci kitaplığını yükleme
Öncelikle bu Speech-to-Text API laboratuvarını çalıştırmak için kullanacağınız bir proje oluşturun ve istediğiniz bir klasörde yeni bir Node.js paketi başlatın:
npm init
NPM, proje yapılandırmasıyla ilgili ad ve sürüm gibi çeşitli sorular sorar. Her soru için ENTER tuşuna basarak varsayılan değerleri kabul edin. Varsayılan giriş noktası, index.js adlı bir dosyadır.
Ardından, Google Cloud Speech kitaplığını projeye yükleyin:
npm install --save @google-cloud/speech
Google Cloud için Node.js geliştirme ortamını ayarlama hakkında daha fazla talimat için lütfen Kurulum Kılavuzu'na bakın.
Artık Speech-to-Text API'yi kullanmaya hazırsınız.
6. Ses dosyalarını metne dönüştürme
Bu bölümde, önceden kaydedilmiş bir İngilizce ses dosyasını metne dönüştüreceksiniz. Ses dosyası Google Cloud Storage'da kullanılabilir.
index.js dosyasının içine gidin ve kodu aşağıdakiyle değiştirin:
// 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();
Kodu inceleyip ses dosyasını transkribe etmek için kullanıldığını görmek için bir veya iki dakikanızı ayırın.
Encoding parametresi, ses dosyası için kullandığınız ses kodlama türünü API'ye bildirir. .raw dosyaları için kullanılan kodlama türü Flac'dir (kodlama türüyle ilgili daha fazla bilgi edinmek için dokümana göz atabilirsiniz).
RecognitionAudio nesnesinde, Cloud Storage'daki ses dosyamızın URI'sini veya ses dosyasının yerel dosya yolunu API'ye iletebilirsiniz. Burada bir Cloud Storage URI'si kullanıyoruz.
Programı çalıştırın:
node .
Aşağıdaki çıkışı göreceksiniz:
how old is the Brooklyn Bridge
7. Kelime zaman damgalarıyla metne dönüştürme
Speech-to-Text, transkribe edilen ses için zaman farkını (zaman damgası) algılayabilir. Zaman kaymaları, sağlanan ses dosyasındaki her konuşulan kelimenin başlangıcını ve sonunu gösterir. Zaman farkı değeri, sesin başlangıcından itibaren geçen süreyi 100 ms'lik artışlarla gösterir.
index.js dosyasının içine gidin ve kodu aşağıdakiyle değiştirin:
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();
Kodu incelemek için birkaç dakikanızı ayırın. Bu kodun, kelime zaman damgalarıyla ses dosyalarını yazıya dökmek için kullanıldığını göreceksiniz.*.* EnableWordTimeOffsets parametresi, API'ye zaman farklarını etkinleştirmesini söyler (daha fazla bilgi için dokümanı inceleyin).
Programınızı tekrar çalıştırın:
node .
Aşağıdaki çıkışı göreceksiniz:
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. Farklı dillerde transkripsiyon yapma
Speech-to-Text API, 100'den fazla dilde transkripsiyonu destekler. Desteklenen dillerin listesini burada bulabilirsiniz.
Bu bölümde, önceden kaydedilmiş bir Fransızca ses dosyasını metne dönüştüreceksiniz. Ses dosyası Google Cloud Storage'da kullanılabilir.
index.js dosyasının içine gidin ve kodu aşağıdakiyle değiştirin:
// 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();
Programınızı tekrar çalıştırın. Aşağıdaki çıkışı görmeniz gerekir:
maître corbeau sur un arbre perché tenait en son bec un fromage
Bu cümle, popüler bir Fransız çocuk masalından alınmıştır.
Desteklenen dillerin ve dil kodlarının tam listesi için buradaki belgelere bakın.
9. Tebrikler!
Ses dosyalarında farklı türde transkripsiyonlar yapmak için Node.js 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 üst kısımdaki "Sil"i tıklayın. Bu işlem, projenin silinmesini planlar.
Daha Fazla Bilgi
- Google Cloud Speech-to-Text API: https://cloud.google.com/speech-to-text/docs
- Google Cloud Platform'da Node.js: https://cloud.google.com/nodejs/
- Google Cloud Node.js istemcisi: https://googlecloudplatform.github.io/google-cloud-node/
Lisans
Bu çalışma, Creative Commons Attribution 2.0 Genel Amaçlı Lisans ile lisans altına alınmıştır.