Speechsynthesizer | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar speechsynthesizer

Windows 10 UWP uygulamalarında TTS için Speech Synthesis kullanımı

10 March 2016 Yorum yapılmamış

Uygulamalarımıza TTS (text-to-speech, yani yazıdan-sese) özelliği ekleyerek belirlediğimiz metinlerin sese dönüştürülmesini sağlayabiliriz.

Windows 8.1 ve Windows Phone 8.1 zamanından beri kullanımımıza açık olan SpeechSynthesis namespace‘i aracılığıyla uygulamamıza TTS desteği ekleyebiliriz.

Hemen yeni bir proje oluşturarak kodlamaya başlayalım;

MainPage.xaml dosyasını açarak sese dönüştürmek istediğimiz metni yazabileceğimiz bir TextBox, bir de Button nesnesi ekleyelim.

Bir metnin sese dönüştürülerek okunması için uygulamamıza ses dosyalarını oynatabilecek bir nesne eklememiz yeterlidir. Bunu için MainPage.xaml dosyasına bir tane de MediaElement nesnesi ekleyelim.

<Page
	x:Class="SpeechSynthesisOrnek.MainPage"
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	xmlns:local="using:SpeechSynthesisOrnek">

	<StackPanel Margin="20">
		<TextBox x:Name="Cumle" Header="Söylenecek Cümle" />
		<Button Content="Söyle" Click="Button_Click" />

		<MediaElement x:Name="mediaElement" />
	</StackPanel>

</Page>

Böylece uygulamanın başlangıç ekranı aşağıdaki gibi gözükmeli;

MainPage.xaml.cs dosyasında Button_Click() methodu aracılığıyla, butona tıklandığında yapılacak işleri yazıyoruz;

private async void Button_Click(object sender, RoutedEventArgs e)
{
	var synth = new SpeechSynthesizer();
	var synthStream = await synth.SynthesizeTextToStreamAsync(Cumle.Text);
	mediaElement.SetSource(synthStream, synthStream.ContentType);
}

Bu methodun içerisinde öncelikle SpeechSynthesizer sınıfından yeni bir değişken oluşturduk.

SynthesizeTextToStreamAsync() methoduna okunmasını istediğimiz metni string tipinde parametre olarak verdik ve geri dönen SpeechSynthesisStream tipindeki cevabı bir değişkene atadık.

Son olarak, ekranda yeralan MediaElement nesnesinin SetSource() methoduna SpeechSynthesisStream tipindeki değişkenimizi parametre olarak vererek, oluşan sesin oynatılmasını sağladık.

Böylece, ekrandaki TextBox nesnesine yazılan cümle, Button nesnesine tıklandığında uygulama tarafından okunacak ve bizler de duyabileceğiz.

C# Speech Synthesis – Konuşma Sentezleyici

25 January 2010 Yorum yapılmamış

Eğer uygulamanızda, Text-to-Speech (TTS) yeteneği olmasını istiyorsanız, .Net Framework içerisinde bunu yapmanızı sağlayacak sınıflar mevcut.

Projenizde Text-To-Speech sınıflarını kullanabilmek için, System.Speech.Synthesis namespace’indeki sınıflara erişebilmeniz gereklidir.

System.Speech.Synthesis namespace’ine, projenize System.Speech.dll assembly’yi referans olarak ekleyerek ulaşabilirsiniz.

Text-to-Speech kullanmak istediğiniz sınıfın bulunduğu kod dosyasının en üstünde bulunan using‘leri yazdığınız kısma;

using System.Speech.Synthesis;

satırını ekleyiniz. Daha sonra yapmanız gereken, kodunuzun ilgili yerine aşağıdaki kod parçasını eklemek;

SpeechSynthesizer ss = new SpeechSynthesizer();
ss.Speak("Konuşmaya çevrilecek ve hoparlörden duyulacak metin");

Uygulama çalışırken, ilgili satıra geldiğinde, önce Speak() methoduna parametre olarak verdiğiniz string hoparlörden duyulur, sonra bir sonraki satırdan çalışmaya devam eder.

Eğer metnin konuşmaya çevrilme işleminin uzun sürdüğünü ve uygulamanıza “yavaşlık” kattığını düşünüyorsanız, aynı kodu aşağıdaki gibi yazabilirsiniz;

SpeechSynthesizer ss = new SpeechSynthesizer();
ss.SpeakAsync("Konuşmaya çevrilecek ve hoparlörden duyulacak metin");

SpeakAsync() method’u sayesinde, uygulama metnin konuşmaya çevrilmesi ve ses kartı aracılığıyla yayınlanması işlemini ayrı bir iş parçacığında gerçekleştirir.

Not : Speak() method’u ingilizce kelimeleri doğru olarak okuyor, fakat türkçe kelimeleri okuyamıyor.