Bu Python scripti, YouTube canlı yayınınızdaki chat mesajlarını anlık olarak yakalar, Microsoft Edge TTS kalitesiyle sesli okur ve aynı zamanda mesajı OBS ekranına yansıtmanız için bir metin dosyasına yazar. YouTube API Key (v3) gerektirmez, kota sınırı yoktur.
seslendirmeyi erkek yerine kadın seslendirme isterseniz
# Seslendirme karakteri (tr-TR-AhmetNeural veya tr-TR-EmelNeural)
TTS_VOICE = "tr-TR-AhmetNeural" kodların içinden bu kısımı düzenleyebilirsiniz
Bilgisayarınızda python kurulu olması gerekmektedir. 3.11.9 sürümü ile test edilmiştir canlı ortamda
1. Gerekli Modüllerin Kurulumu
Kodu çalıştırmadan önce bilgisayarınızda Python yüklü olmalıdır. Ardından terminali (CMD veya PowerShell) açıp şu komutu yapıştırın:
Python:
pip install pytchat edge-tts playsound==1.2.2
2. Kullanım Talimatı
- Video ID Belirleme: Yayınınızın URL'sindeki v= kısmından sonraki karakterleri (Örn: youtube.com/watch?v=ABC123XYZ ise ABC123XYZ) koddaki VIDEO_ID kısmına yapıştırın.
- CMD ile Kodu Çalıştırın: python chat.py komutuyla başlatın.( dosyanın olduğu dizinde çalıştırmanız gerekmektedir. masaüstünde ise "cd desktop" yazarak ilgili dizine gidebilirsiniz masaüstünde bir klasörde ise cd desktop/dosyaadi şeklinde erişim sağlayın klasör adında boşluk bırakmayın hata alabilirsiniz
- OBS Ayarı:
- OBS'i açın ve Kaynaklar panelinden "+" butonuna basıp "Metin (GDI+)" ekleyin.
- Özellikler penceresinde "Dosyadan oku" (Read from file) kutucuğunu işaretleyin.
- "Gözat" (Browse) diyerek scriptin bulunduğu klasördeki obs_chat.txt dosyasını seçin.
- Metin kaynağını oyunun üzerine yerleştirin ve boyutunu ayarlayın.
- dosyaları tek bir klasörde veya masaüstünde tutun txt ve python dosyası
Python:
import pytchat
import asyncio
import edge_tts
import re
import os
import random
import time
from playsound import playsound
# ================= AYARLAR =================
# Canlı yayın linkindeki v= kısmından sonraki ID'yi yazın
VIDEO_ID = "BURAYA_VIDEO_ID_YAZIN"
# Seslendirme karakteri (tr-TR-AhmetNeural veya tr-TR-EmelNeural)
TTS_VOICE = "tr-TR-AhmetNeural"
# OBS'in okuyacağı dosya adı
OBS_FILE = "obs_chat.txt"
# ===========================================
def temizle(msg):
"""Linkleri ve okunması zor karakterleri temizler."""
msg = re.sub(r'http\S+', '', msg)
msg = re.sub(r'[^\w\sçğıöüÇĞİÖÜ]', '', msg)
return msg.strip()
def obs_dosya_yaz(kullanici, mesaj):
"""Mesajı OBS'in anlık görebileceği txt dosyasına yazar."""
try:
with open(OBS_FILE, "w", encoding="utf-8") as f:
f.write(f"{kullanici}: {mesaj}")
f.flush()
os.fsync(f.fileno())
except Exception as e:
print(f"Dosya Yazma Hatası: {e}")
async def tts_oku(msg):
"""Gelen mesajı sese çevirir ve çalar."""
if not msg: return
temp_file = f"temp_{random.randint(1000,9999)}.mp3"
try:
communicate = edge_tts.Communicate(msg, TTS_VOICE)
await communicate.save(temp_file)
playsound(temp_file)
except Exception as e:
print(f"Seslendirme Hatası: {e}")
finally:
if os.path.exists(temp_file):
try: os.remove(temp_file)
except: pass
async def main():
chat = pytchat.create(video_id=VIDEO_ID)
print(f"--- SİSTEM HAZIR ---")
print(f"Takip Edilen Yayın ID: {VIDEO_ID}\n")
while chat.is_alive():
try:
for c in chat.get().sync_items():
kullanici = c.author.name
mesaj = c.message
temiz_msg = temizle(mesaj)
print(f"[{time.strftime('%H:%M:%S')}] {kullanici}: {temiz_msg}")
# Dosyaya yaz ve sesli oku
obs_dosya_yaz(kullanici, temiz_msg)
await tts_oku(f"{kullanici} diyor ki {temiz_msg}")
await asyncio.sleep(0.1)
except Exception as e:
print(f"Hata: {e}")
await asyncio.sleep(5)
if __name__ == "__main__":
try:
asyncio.run(main())
except KeyboardInterrupt:
print("\nKapatıldı.")
seslendirmeyi erkek yerine kadın seslendirme isterseniz
# Seslendirme karakteri (tr-TR-AhmetNeural veya tr-TR-EmelNeural)
TTS_VOICE = "tr-TR-AhmetNeural" kodların içinden bu kısımı düzenleyebilirsiniz
Bilgisayarınızda python kurulu olması gerekmektedir. 3.11.9 sürümü ile test edilmiştir canlı ortamda