import os from pydub import AudioSegment from pydub.playback import play from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification import speech_recognition as sr from nltk import wordpunct_tokenize from nltk.corpus import stopwords
# Türkçe dilinin stop words'lerini indirin import nltk nltk.download('stopwords')
# Ses dosyalarının bulunduğu klasör yolu klasor_yolu = "/home/firengiz/İndirilenler/audio/Audio_Eng"
# Dil sınıflandırma modelini yükleme model_name = "distilbert-base-uncased" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSequenceClassification.from_pretrained(model_name)
# Türkçe stop words'leri al turkce_stopwords = set(stopwords.words('turkish'))
# Klasördeki tüm dosyaları al dosya_listesi = os.listdir(klasor_yolu)
# Ses dosyalarını sırasıyla aç, transkript oluştur ve gerçek dil tahmini yap for mp4_dosyasi in dosya_listesi: if mp4_dosyasi.endswith(".mp4"): dosya_yolu = os.path.join(klasor_yolu, mp4_dosyasi)
# Ses dosyasını yükleme ses = AudioSegment.from_file(dosya_yolu, format="mp4")
# Ses dosyasını Google Speech Recognition API kullanarak transkript oluşturma recognizer = sr.Recognizer() with sr.AudioFile(wav_dosya_yolu) as source: try: audio_data = recognizer.record(source) transkript = recognizer.recognize_google(audio_data, language="tr") except sr.UnknownValueError: transkript = "" # Tanınamayan değer hatası durumunda transkripti boş bir dize olarak ayarla
# Ses dosyasının transkripti ile gerçek dil tahmini yapma kelime_listesi = wordpunct_tokenize(transkript) turkce_kelime_sayisi = sum(1 for kelime in kelime_listesi if kelime.isalpha() and kelime.isascii() and kelime.lower() in turkce_stopwords)
# Ses dosyasının transkripti ile dil tahmini yapma inputs = tokenizer(transkript, return_tensors="pt") outputs = model(**inputs) predicted_class = outputs.logits.argmax().item()
# Gerçek dil tahminini belirleme real_language = "Turkish" if "tr" in mp4_dosyasi else "English"
# Ses dosyasını oynatma play(ses)
language_labels = ["English", "Turkish"] # Türkçe veya İngilizce dil tahminini ve transkripti yazdırma if turkce_kelime_sayisi > 0: predicted_language = "Turkish" else: predicted_language = "English"
print(f"{mp4_dosyasi} dosyasındaki gerçek dil: {real_language}") print(f"{mp4_dosyasi} dosyasındaki dil tahmini: {predicted_language}") print(f"Transkript: {transkript}")
# Kullanıcıdan bir tuşa basılmasını bekleyin input(f"{mp4_dosyasi} dosyasını dinledikten sonra devam etmek için bir tuşa basın...")
print("İşlem tamamlandı.")
Get Firengiz Kerimova’s stories in your inbox
Join Medium for free to get updates from this writer.
Kütüphane ve Modüllerin İçe Aktarılması:
os: İşletim sistemi ile etkileşim sağlamak için.
pydub: Ses dosyalarını işlemek ve oynatmak için.
transformers: Hugging Face tarafından sağlanan dil modellerini kullanmak için.
speech_recognition: Ses tanıma için.
nltk: Doğal dil işleme için.
Dil Modellerinin Yüklenmesi:
distilbert-base-uncased modeli, dil sınıflandırma için kullanılıyor.
Türkçe Stop Words’lerin İndirilmesi:
Türkçe dilindeki stop words’lerin kullanılabilmesi için NLTK kütüphanesi aracılığıyla indiriliyor.
Ses Dosyalarının Bulunduğu Klasör Yolu:
klasor_yolu değişkeni, ses dosyalarının bulunduğu klasörün yolunu içeriyor.
Ses Dosyalarının İşlenmesi ve Dil Tahminleri:
dosya_listesi ile klasördeki tüm dosyaların listesi alınıyor.
Her ses dosyası için:
Ses dosyası yükleniyor ve WAV formatına dönüştürülüyor.
Google Speech Recognition API kullanılarak ses dosyasının transkripti alınıyor.
Transkript üzerinde Türkçe stop words’ler kullanılarak gerçek dil tahmini yapılıyor.
Aynı zamanda, distilbert modeli kullanılarak dil tahmini yapılıyor.
Sonuçların Yazdırılması:
Gerçek dil, tahmin edilen dil ve transkript bilgileri ekrana yazdırılıyor.
Kullanıcıdan bir tuşa basılmasını bekliyor ve sonraki dosyaya geçiyor.
Notlar:
language_labels listesi, dil etiketlerini içeriyor (İngilizce ve Türkçe).
Gerçek dil, tahmin edilen dil ve transkript bilgileri kullanıcıya gösteriliyor.
Bu kod, ses dosyalarını işleyerek dil tahminleri yapmak ve transkriptleri almak için oldukça kapsamlı bir yaklaşım kullanmaktadır. pydub, transformers, speech_recognition, ve nltk gibi çeşitli kütüphaneleri kullanarak bu işlemleri gerçekleştirmektedir.