Konuşma tanıma (Speech recognition) veya konuşmadan metne (speech-to-text), bir cihazın veya programın yüksek sesle konuşulan kelimeleri tanımlama ve bunları okunabilir metne dönüştürmesi işlemidir.
Konuşma tanıma ve ses tanıma (voice recognition) terimleri bazen birbirinin yerine kullanılmasına rağmen, aslında iki terim birbirinden farklıdır. Konuşma tanıma, konuşulan dildeki kelimeleri tanımlamak için kullanılır. Ses tanıma ise, belirli bir kişinin sesini veya konuşmacıyı tanımlamak için kullanılan biyometrik bir teknolojidir.
Program için aşağıda bilgileri ve sanal ortamda kurulum komutları verilen kütüphaneleri kullanacağız:
1. SpeechRecognition kütüphanesi
Çeşitli motorlar ve API'ler için çevrimiçi ve çevrimdışı desteği sağlayan konuşma tanıma kütüphanesidir.
pip install SpeechRecognition
2. gTTS kütüphanesi
gTTS (Google Text-to-Speech), Google Translate API'si kullanarak metini çeviren bir kütüphanedir.
pip install gTTS
Bu kütüphane ile birlikte, urllib3, idna, colorama, charset-normalizer, certifi, six, requests ve click kütüphaneleri otomatik olarak yüklenir.
3. Playsound kütüphanesi
Ses çalmak için kullanılan bir kütüphanedir.
pip install playsound
4. PyAudio kütüphanesi
Tüm işletim sistemlerinde çalışan ses giriş/çıkış akışı kütüphanesidir. Ses ile ilgili işlemlerde kullanılır.
Bu kütüphanenin doğrudan "pip install pyaudio" komutu ile kurulmasında herhangi bir sorun yaşandığında kurulumu gerçekleştirmek için, Christoph Gohlke tarafından Python paketleri için resmi olmayan Windows işletim sistemi dosyalarını içeren web sitesine ait buradaki bağlantıdan bilgisayarımızın işletim sistemine göre indirdiğimiz aşağıdaki dosyalardan birisini, sanal ortamın altındaki Scripts dizini altına kopyalayarak kullanıyoruz:
PyAudio-0.2.11-cp39-cp39-win_amd64.whl
PyAudio-0.2.11-cp39-cp39-win32.whl
pip install PyAudio-0.2.11-cp39-cp39-win_amd64.whl
import speech_recognition as sr
from gtts import gTTS # Google text to speech kütüphanesi
# from playsound import playsound
import random
import os
r = sr.Recognizer() # speech_recognition için recognizer nesnesi tanımlama
# Konuşmayı metine çeviren ve ekrana yazan fonksiyon
def SpeechToText(stt_mic):
print("Konuşun:")
# Recognizer'ın çevredeki gürültü seviyesine göre enerji eşiğini ayarlamasına izin vermek için bir saniye bekleme
r.adjust_for_ambient_noise(mic, duration=0.2)
audio = r.listen(stt_mic) # Kullanıcı girişini alma
text = r.recognize_google(audio, language='tr-TR') # Google ile sesi metine çevirme
text = text.lower() # Metni küçük harfe çevirme
print(f"Alınan metin: {text}") # Metni ekrana yazma
return text
# Metni konuşmaya çeviren ve oynatan fonksiyon
def TextToFile(tts_text):
# Dosya oluşturma
rand = random.randint(1, 10000)
dosya = 'metin-' + str(rand) + '.txt'
with open(dosya, "w") as file:
file.write(tts_text)
# read() fonksiyonu ile dosya içeriğinin tamamını bir defada okuma
with open(dosya, "r") as file:
print(file.read())
try:
while True:
with sr.Microphone() as mic: # Giriş kaynağı olarak nikrofon kullanma
text = SpeechToText(mic) # Konuşmayı metine çevirme ve ekrana yazma
TextToFile(text) # Metni bir metin dosyasına yazma
except KeyboardInterrupt: # Ctrl-C ile çıkış
pass
Programı çalıştırdığımızda, SpeechToText() fonksiyonu mikrofondan gelen insan sesini metne çevirir ve metin değerini ekrana yazar. Sonra, TextToSpeech() fonksiyonu ile metni konuşmaya çevirir ve oynatır. Aynı işlem sürekli tekrar eder. Ctrl-C tuş bileşimine bastığımızda, program sona erer.