Speech-to-Text İçin Yeni State-ül Art : OpenAI Whisper

Kemal Can Kara
Kariyer.net Tech
Published in
6 min readOct 10, 2022

--

2022 Eylül Ayı yapay zeka dünyasını takip edenler için acayip baş döndürücü bir aydı. Dall-E 2 ler, Stable-diffusion’ lar, Make-A-Video’lar filan derken en son Whisper’ı gördük. GPT3 ile dil modelleri dünyası için dev bir adım attıran OpenAI (Elon Musk abimiz), şimdi de sesten metne yeni state-of-the-art modellerini duyurdular ve ücretsiz (hem de hiç para vermeden :)).

Detaylarını https://openai.com/blog/whisper/ şuradan okuyabilirsiniz. Ben uzatmadan kendi deneyimlerimden ve fikirlerimden bahsedeceğim.

State-ül Art mı?

Beni aa bunu denemem lazım dedirten şey aslında çoklu dil için de başarısının yüksek olduğunu görmemdi. Aşağıdaki resimde Türkçe için WER skorunun < 20 olduğu görülüyor. Bu skor ürün ortamında da kullanım için uygun olabileceğine dair bir işaret veriyor. WER -> Word Error Rate için bir kısaltma, merak ederseniz şuradan okuyabilirsiniz. Çok iyi bir ölçüm metodu olmasa da başka uygulamalar için kıyas etmek ve genel bir fikir edinmek için iyi bir araç.

Orjinal paper dan alınmıştır

Aşağıdaki resim, eğitim verilerinin miktarı ile tanıma doğruluğu performansı (WER) arasındaki ilişkiyi açıkça göstermektedir. İngilizce için <%5 error rate gerçekten çok iyi bir skor. Elbette açık ara en büyük eğitim verisine sahip olmasının faydasını görmüş gibi.

Testing Attention Pls!.

Hızlı bir şeyler denemek istedim. Kurulum için copy-paste yapmayacağım burada detayları var ilgilenenler deneyebilirler. En kolay deneme için Google Colab ı tavsiye ederim.

Ben öncelikle Ingilizce için başarısını görmek istedim. Tüm denemeler için şu 2 satır kodu çağırmak yeterli:

Son bir noktadan daha bahsedeyim. Kodda görüldüğü üzere önce bir model yükleniyor. Burada Whisper’ın farklı seçenekleri var, parametre sayılarına göre küçük, orta vebüyük gibi seçenekleri var. Değişen şey elbette sonucun doğruluğu. Karşılığında ise daha uzun cevap süresi oluyor.

  • Deneme 1 — İngilizce Video — Videolu Mülakat

Output:

Good day, my name is Sharina Rans-Yossan. I am applying for the position of Marketing Manager. I am a graduate of Marketing Management majoring in Advertising at De La Salle University, Dasmariñas. Why should you hire me? I am driven, I have an amazing work ethic, I have an outgoing and friendly personality that can improve valueability to your company. I have interpersonal skills with hands-on experience in the business industry. I am reliable, highly organized, determined, easy to train and keen for new experience. I believe that in the combination of my educational background and my desire to grow professionally will be a valuable asset to your company. If you are interested or have any further questions, feel free to contact me at my number 0906 4249 407 or email me at sharinasyossan at yahoo.com. I look forward to hearing from you soon.

Neredeyse hatasız. Üstelik sadece kelimelerin doğruluğu değil, metnin grammer ve noktalama işaretleri açısından doğruluğu çok iyi.

  • Deneme 2— Türkçe Video — Kariyer.net Reklam

Output:

Cüneyt Bey sesiniz gelmiyor. Ben sizi duyamıyorum. Herkes duyuyor mu ya? Arkadaşlar merhaba. 47 dakikadır konuşuyorum. Uyarmıyorsunuz. Aşk olsun ekip. Ozan neredesin? Kameranı aç bakayım. Kayak merkezi mi orası Ozan’cığım? Süper. Arkadaşlar yeni sistemimizin adı… Cüneyt sistemi. Çok iyi. Bundan sonra haftanın 3 günü ofisten, eskiden de evden çalışıyoruz. Kaç gün? 5. O zaman böyle… Özge Hanım şu kettle’ı kapatır mısınız? Sizin suyunuz da kaynadı. Geliyor mu ki sesin? Şaka geçmedi. Önemli değil. İlk fırsatta iş değiştireceklere İş Fırsatları Kariyer.net’te. Hemen indir kariyerine uygun ilanları aramaya başla. Ya da bırak şirketler seni keşfetsin.

Bence hala oldukça iyi. Sondaki “rakip şirketler haftanın 17 günü çalışıyor.” gibi bir ifadeyi yutmuş ve çok küçük hatalar dışında yazım şekli, noktalamalar vs. gayet iyi duruyor. Bunu bir de daha küçük boyutlu bir model ile denedim. Sonuçlar neredeyse aynı, hatta bu en büyük modelde ortada “ama 8 gün ediyor” gibi yutulan bir yeri de getirebildi. Ama sonda arkaplan müziği girince ki konuşmaların hiçbiri yok. Large model oradan gayet net getirdi.

  • Deneme 3 - 4 - 5 — Türkçe Çağrı Merkezi Kayıtları

Bu sefer de Kariyer.net satış ekibi çağrı merkezinden 3 kayıt dinledim. Metinlerini burada gizlilik sebebiyle paylaşamayacağım.

Yaklaşık 1.5 dakikalık 3 konuşma için izlenimim Youtube Türkçe çevirilerine göre biraz daha fazla hata yapıyor. Ancak hala çok çok iyi, hatalar şu düzeyde:

  • Karyanet ‘ten arıyorum -> Kariyer.net özel şirket ismi sebebiyle olduğunu düşündüm, ancak yukarıdaki youtube örneğinde çok rahat çevirmiş.
  • Yarın ıslah da hemen şey yaparız. -> Yarın sabah
  • FİMAS aylarında sunacağım. -> Finans tarafına..

Buna benzer hatalar olmasına karşın dilbilgisi ve genel akışı anlamak adına ben çok başarılı buldum. Bu ufak hataların sebebi belki youtube tarafında çok kaliteli, temiz bir ses dosyası varken, görüşmenin biraz daha kötü kalitede kaydı olması olabilir diye düşünüyorum.

Çağrı Merkezi Demişken..

Şimdi 3 tane görüşmenin sonuçlarını görünce heyecanlanmamak elde değildi. Hızlıca bir tool tasarlayıp, konuşmaları metne çevirmek istedim. Sabah olmadan bir ürün çıkartabilirim diye. Ancak biraz karıştırınca gördüm ki, Whisper API nin henüz konuşmacı ayırma özelliği yok. Yani konuşan1,konuşan2 gibi etiketler yapmıyor. Sadece tüm konuşmaları kalıp halinde çeviriyor.

Konuşmalar bütün halde değil, eğer her konuşmacının konuşması teker teker verilseydi de başarı değişir miydi denemek istedim.

Ses işleme konusunda bir tecrübem olmamasına rağmen, hızlı bir araştırmadan sonra pyannote.audio kütüphanesini buldum.

Çıktı olarak aşağıdaki gibi bir resim elde ediyoruz. Bu ses dosyasında hangi saniyeler arasında hangi konuşmacıların konuştuğunu gösteriyor. Bunu elde etmek için üstteki gibi basit bir kod yazmak yeterli oluyor. Yine hangi hazır modeli kullandığım görülebilir.

Ardından aşağıdaki gibi bir kod ile bu süreleri elde ettim.

Sonra bu saniyelere göre ses dosyasını parçalara bölmek için AudioSegment adında bir kod kullandım.

Sonuç aşağıdaki gibi. Sol tarafta yukarda da elde ettiğimiz tüm dosyanın metni, sağda ise her bir konuşmacı için bölümlenmiş ayrı ses dosyalarının sonuçları. Çok az bir fark olduğunu siz de görebilirsiniz.

Eksikler

Şimdi bu kadar övdük ve yükseldik ama hem blog postlarını okuyunca hem de kendi denemelerim sonucu 2 önemli eksiklik görüyorum.

  • Şimdilik sadece offline da çalışabilecek kapasitede. Çalışma süresinde de bunu görebiliyoruz. Özellikle “large” modeli ile sonuç almak için kısa bir süre de olsa beklemeniz gerekiyor. Örneğin voicebot gibi ürünlerin önemli özelliklerinden biri, gecikmenin <500 milisaniye olması gerektiği ve aramadaki herhangi bir sessizliğin kötü bir müşteri deneyimi anlamına gelmesidir. Whisper, asenkron uygulamalara odaklanmış ve büyük olasılıkla, kayıtları işlemek için çevrimdışı bir kapasitede kullanılacaktır.
  • İkincisi, henüz içerideki konuşmacıları da ayırt edecek hazır bir fonksiyon ile gelmiyor. Bunu da ayrıca, örneğin benim yukarıda yaptığım gibi, farklı bir uygulama ile çözmek gerekiyor.

Sonuç

Ben beğendim. Hem de çok :) Özellikle fine-tuned edildikten sonra bir çok özel alanda çok daha iyi sonuçlara hızlıca kavuşacaktır. GPT-3 ve Dall-E 2 den sonra bunu ücretsiz yayınlamaları biraz şaşırttı :). Ben şimdiden birkaç ürün fikrini denemek için kodlamaya devam edeceğim, sonuçlarını yine paylaşırım.

Yazıyı https://huggingface.co/spaces/stabilityai/stable-diffusion a verdiğim “artificial intelligence machine whispering to a human” prompt uyla bitiriyorum. Bunu da bir ara ayrıca ele almak lazım. Telif hakkı olmadan çok kolay bir şekilde blog yazımı zenginleştirebildim. Hem de dünyada sadece bu blogda görebileceğiniz bir resimle.

artificial intelligence machine whispering to a human

Görüşmek üzere,

Can.

--

--