Silverlight da COM Api kullanarak Metni Konuşmaya çevirme

Sanırım bu işe ilginiz varsa metini konuşmaya çevirme motoru (Text to Speech Engine) duymuşsunuzdur. Duyamadı isenizde şimdi duydunuz:) Bu bilgisayar dünyasında yeni bir şey değil. Bildiğim kadarı ile Windows 98 den itibaren var fakat Silverlight da bu tamamen yeni bir şey. Eğer Silverlight uygulamalarınız da bunu kullanmak isterseniz SAPI Engine Api sini çağırmanız gerekiyor. Bunu sadece COM Apilerini kulnararak başarabiliriz.


Şimdi COM Api kullanarak SAPI Engine i nasıl çağıracağımızı anlatacağım.

Gerekli Şeyler;
    1. Microsoft Visual Studio 2010
    2. Silverlight Tools for Visual Studio 2010
      Tabiki ilk olarak birr Silverlight projesi oluşturacağız sonra devam:)

      Out of Browser Settingsi Ayarlama;
      Bir şey yapmadan önce, bazı yapılandırma ayarları gerekli çünkü COM Api sadece Silverlight Out-Of-Browser uygulamada çalışır bunu için proje ayarlarında değişiklik yapmamız gerekir.
      • Silverlight projenize sağtıklayın sonra Ayarları açın (Properties) .


      • Enable running application out of the browser checkbox ını tıklayın sonra Out-of-Settings butonuna tıklayın.

      • Önce ayar penceresi açılacak, ekrandan istediğiniz secenekleri ayarlayı.Show install menu ve Require elevated trust when running outside the browser checkboxların seçili olduğundan emin olun.

      Bu ayarları yaptığınız da bu web versiyon uygulamanızı Out-of-Browser uygulaması gibi yüklemeniz mümkün olacak.

      Dinamik kelimeler için projeyi ayarlama;

      Şimdi bir dll dosyasını projemize referans olarak eklememiz gerekiyor.Bu uygulamada dinamik kelime kullanılacak bu nedenle Microsoft.CSharp dll referans olarak eklenmesi gerekiyor.
      • Projeye sağ tıklayın ve çıkan menüden Add Referansı seçin

      • Şimdi açıla pencerede .Net sekmesine gelin ve orada listboxda sıralanan listeden Microsoft.CSharp ı bulun ve seçip Ok tıklayın. Böylelikle dll projemize eklenmiş oldu.

      Şimdi Arayüzü tasarlayalım;

      Benim hazırladğım arayüzünü oluşturacağım sayfanın ismi MainPage.xaml bu sayfada bir tane textbox ve bir tane de button olacak. textbox ın ismi txtMessage ve butonun ismide btnSpeak olacak. Hazrladğım arayüzün kodu;

      <stackpanel orientation="Vertical" width="320" x:name="LayoutRoot">     
                  <textblock margin="10" text="Metin girin ve Speak tuşuna basınız.." textwrapping="Wrap">
                  <stackpanel orientation="Horizontal">
                      <textbox acceptsreturn="True" height="100" margin="5" textwrapping="Wrap" width="200" x:name="txtMessage">
                      <button click="btnSpeak_Click" content="Speak" height="100" margin="5" width="100" x:name="btnSpeak">
                  </button></textbox>
              </stackpanel>
      </textblock></stackpanel>

      Şimdi asıl kod ile oynayacağımız kısma geçelim.MainPage.xaml sayfasındaki butonun click eventin oluşması için buttona iki kere tıklayalım ve buttonun tıklama eventi için oluşan fonksiyonun içine Sapi.SpVoice nesnesini oluştumak için aşşağıdaki kodu yazalım.
      private void btnSpeak_Click(object sender, RoutedEventArgs e)
              {
                  if (App.Current.IsRunningOutOfBrowser && App.Current.HasElevatedPermissions)
                  {
                      dynamic textToSpeech = AutomationFactory.CreateObject("Sapi.SpVoice");
                      textToSpeech.Volume = 100;
                      textToSpeech.Speak(txtMessage.Text);
                  }
                  else
                  {
                      MessageBox.Show("Lütfen Out-of-Browser uygulamasını güvenilir yükleyin.");
                  }
      
      
              }
      İşte altı üstü bu kadar kod şimdi bu kod ne yapıyor bakalım bu kodda grüldüğü üzere uygulamamızın güvenilir bir şekilde çalışıp çalışılmaığına bakılıyor. Eğer güvenilir bir şekilde çalışıyor ise ozaman bir tane Sapi.SpVoice nesnesi oluşturuluyor.Bu neneni bir çok özelliği var şimdik biz sadece bir tanesinde değişiklik yaptık oda volume bu oluşturduğumuz nesnin sadece ses düzeyini ayarlıyor. Sonra sadece txtMessage ismindeki textbox a yazılan metni sese dönüştürmesi için oluştur duğumuz nesnenin Speak metodunu çağırıp textbox daki metni veriyoruz ve bizim yerimize o herşeyi yapıyor:) Bu kadar kodu çalıştırın ve yaptığınız uygulamanın keyfine varın:)

      0 yorum:

      Yorum Gönder

      Share