Gelişmiş konuşmacı tanıma Video dan Kişilerin konuşmısnı Yazıya çevir

openart-image_Q-MmKRMb_1731314587423_raw

Gelişmiş konuşmacı tanıma

Gelişmiş konuşmacı tanıma için pyannote.audio kütüphanesini kullanabiliriz. Bu kütüphane, konuşmacı ayrımı (diarization) için özel modeller sağlar. İşte bu kütüphaneyi kullanarak konuşmaları tanıyarak yazıya dökmek için bir Python kodu örneği:

Gerekli Kütüphaneleri Yükleme

Öncelikle gerekli kütüphaneleri yükleyin:

bash
Copy
pip install pyaudio speechrecognition pyannote.audio

Python Kodu

Aşağıda, pyannote.audio kütüphanesini kullanarak konuşmacıları tanıyarak yazıya dökmek için bir Python kodu örneği verilmiştir:

 

import speech_recognition as sr
from pyannote.audio import Pipeline
import numpy as np
import wave
import contextlib

# SpeechRecognition nesnesi oluştur
recognizer = sr.Recognizer()

# Mikrofonu kaynak olarak kullan
mic = sr.Microphone()

# pyannote.audio pipeline’ı oluştur
pipeline = Pipeline.from_pretrained(“pyannote/speaker-diarization”)

# Konuşmacı numaralarını takip etmek için bir sözlük
speakers = {}

# Ses kaydı için bir dosya aç
with contextlib.closing(wave.open(“meeting.wav”, ‘wb’)) as wf:
wf.setnchannels(1)
wf.setsampwidth(2)
wf.setframerate(16000)

try:
print(“Dinleme başladı…”)
with mic as source:
recognizer.adjust_for_ambient_noise(source)
while True:
audio = recognizer.listen(source)

# Ses kaydını dosyaya yaz
wf.writeframes(audio.get_raw_data())

except KeyboardInterrupt:
print(“Dinleme durduruldu.”)

# Ses dosyasını kullanarak konuşmacı ayrımı yap
diarization = pipeline(“meeting.wav”)

# Konuşmacı ayrımı sonuçlarını işle
for turn, _, speaker in diarization.itertracks(yield_label=True):
start_time = turn.start
end_time = turn.end

# Ses dosyasından ilgili bölümü al
with contextlib.closing(wave.open(“meeting.wav”, ‘rb’)) as wf:
wf.setpos(int(start_time * wf.getframerate()))
frames = wf.readframes(int((end_time – start_time) * wf.getframerate()))
audio_segment = sr.AudioData(np.frombuffer(frames, dtype=np.int16), wf.getframerate(), wf.getsampwidth())

try:
# Konuşmayı metne dönüştür
text = recognizer.recognize_google(audio_segment, language=”tr-TR”)
print(f”Konuşmacı {speaker}: {text}”)

# Konuşmacı numarasını sözlüğe ekle
if speaker not in speakers:
speakers[speaker] = []
speakers[speaker].append(text)

except sr.UnknownValueError:
print(“Anlaşılamayan konuşma”)
except sr.RequestError as e:
print(f”Hata: {e}”)

# Konuşmaları yazdır
for speaker, texts in speakers.items():
print(f”Konuşmacı {speaker}:”)
for text in texts:
print(f” – {text}”)

 

 

Açıklamalar:

  • pyannote.audio: Konuşmacı ayrımı (diarization) için kullanılır.
  • speech_recognition: Konuşmayı metne dönüştürmek için kullanılır.
  • pyaudio: Mikrofon ile ses kaydı yapmak için kullanılır.
  • wave: Ses dosyasını işlemek için kullanılır.

Adımlar:

  1. Ses Kaydı: Mikrofon ile ses kaydı yapılır ve bir .wav dosyasına yazılır.
  2. Konuşmacı Ayrımıpyannote.audio kullanılarak ses dosyasından konuşmacı ayrımı yapılır.
  3. Metin Dönüşümü: Her konuşmacının söyledikleri metne dönüştürülür ve sözlükte saklanır.
  4. Sonuçları Yazdırma: Her konuşmacının söyledikleri yazdırılır.

Bu kod, konuşmacıları tanıyarak yazıya dökmek için temel bir yapı sunar. Daha gelişmiş işlemler için ek modüller ve ayarlamalar gerekebilir.

Yazı gezinmesi

Mobil sürümden çık