PWA'nız konuşmaya başladığında

Makaleler için konuşma sentezi eklemek için WaveNet'i kullanma

Konuşma hakkında konuşurken ne hakkında konuşuyoruz

Tüm makalelerimin diğer çeşitli dillere otomatik çevirisini kurduktan sonra, bir sonraki modern ve kullanışlı özelliği uygulayabileceğim konusunda düşünmeye başladım. Yazılarımı okumanın en keyifli deneyimlerden biri olduğunu kesinlikle kabul edeceğiniz için, otomatik konuşma sentez hizmeti kullanmanın makale UX'ini daha da geliştirebileceğini düşündüm. Bu nedenle plan basitti: Bir makale metninin başına, kullanıcıların onu tarayıcının ses oynatıcısı aracılığıyla dinlemelerine olanak tanıyan yeni bir işlem ekleyeceğim.

Nasıl yapılır: konuşma sentezi

Mevcut uygulamanın mimarisine baktıktan sonra, otomatik konuşma sentezi ve bir ses çalar ile PWA'yı geliştirmek için aşağıdaki iş akışı uygulandı:

  1. standart seçenek yerine (çok) daha pahalı WaveNet seçeneğini kullanarak GCP'nin metinden konuşmaya hizmeti aracılığıyla sentezi uygulamak
  2. oluşturulan mp3 dosyasını, yine GCP'de barındırılan basit bir dosya sistemi olan Firebase Storage'da depolamak; dosyanın adı, makalenin bilgi bilgisinden ve bana örtülü bir kimlik veren ve belirli bir konuşma için tüm URL'lere atıfta bulunan ayrı bir belgenin eklenmesini önleyen kullanılan yerel ayardan oluşur.
  3. o zaman şu anda en fazla 24 saatte bir gerçekleşen bir makale sayfası oluştururken veya güncellerken Vercel sunucusunda yukarıdaki iki adımı çağırıyorum
  4. bir ses URL'sinin mevcut olması durumunda web oynatıcı için tembel yükleme kullanma

tembel olmak önemli

Web uygulamalarımın yükleme performansına (ve dolayısıyla arama motoru sıralamasına) zarar vermek istemiyorum, bu nedenle web oynatıcısı yalnızca iki koşul karşılandıktan sonra isteğe bağlı olarak yüklenir:

  • Makale için bir ses URL'si gerçekten mevcuttur, bu şu anda yalnızca İngilizce metinler için esas olarak maliyetleri düşük tutmak için geçerlidir.
  • Bir kullanıcı, yüksek sesle okunan makaleyi gerçekten dinleme arzusunu belirten oynat düğmesine tıklar.

Neden tüm diller değil (şimdilik)?

Gerçek konuşma sentezi modeli olarak Google'ın WaveNet'ini kullandığım için, bu özelliğin maliyetlerini ana endişe noktası olarak düşünmek zorundayım. WaveNet kullanımı, standart sentez modelinin dört katına mal olur. Yine de WaveNet'in yalnızca Google'ın kendisinden değil, örneğin IBM'den de diğer modellerin çoğundan çok daha iyi performans gösterdiği için onu seçtim.

Sadece başlangıç

Bu, bu PWA için ilk sürümde konuşma sentezini nasıl uyguladığıma hızlı bir genel bakıştı. Kurulumun çoğunu zaten bir GCP müşterisi olarak yaptığım için kodlama süresi yalnızca birkaç saat sürdü. Oluşturulan çıktının kulağa inanılmaz derecede iyi gelmesi, WaveNet ve ML tabanlı yaklaşımların konuşma ve metin işleme konusundaki güçlü yanlarını gösteriyor. Gelecekteki bir uygulama, desteklenen tüm diller için sesli okumayı ekleyebilir. Önümüzdeki aylardaki kullanım ve maliyetlere göre bu durumda nasıl bir yol izleyeceğimi belirleyeceğim.

Tom