Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Windows Phone 8 Text To Speech (TTS)

DZone's Guide to

Windows Phone 8 Text To Speech (TTS)

· Java Zone ·
Free Resource

The CMS developers love. Open Source, API-first and Enterprise-grade. Try BloomReach CMS for free.

In this article, we will see how to integrate the Text-To-Speech engine with Windows Phone 8.

In Windows Phone 8, it is easy to integrate Text-To-Speech to get the voice for a given input string.

Create a new Windows Phone 8 project and enable the speech recognition capabilities “ID_CAP_SPEECH_RECOGNITION” in the WMAppManifest.xml file as shown below. 



Figure 1: Create one Button and TextBlock to do the Text-To-Speech operation.

XAML Code

  1. <phone:PhoneApplicationPage
    x:Class="TextToSpeech.MainPage"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
     xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait"Orientation="Portrait"
    shell:SystemTray.IsVisible="True">
     <!--LayoutRoot is the root grid where all page content is placed-->
     <Gridx:Name="LayoutRoot"Background="Transparent">
     <Grid.RowDefinitions>
     <RowDefinitionHeight="Auto"/>
     <RowDefinitionHeight="*"/>
     </Grid.RowDefinitions>
     <StackPanelx:Name="TitlePanel"Grid.Row="0"Margin="12,17,0,28">
     <TextBlockText="MY APPLICATION"Style="{StaticResource PhoneTextNormalStyle}"Margin="12,0"/>
     <TextBlockText="page name"Margin="9,-7,0,0"Style="{StaticResource PhoneTextTitle1Style}"/>
     </StackPanel>
     <!--ContentPanel - place additional content here-->
     <Gridx:Name="ContentPanel"Grid.Row="1"Margin="12,0,12,0">
     <TextBoxx:Name="inputStringBox"HorizontalAlignment="Left"Height="72"Margin="30,78,0,0"TextWrapping="Wrap"VerticalAlignment="Top"Width="392"/>
     <Buttonx:Name="getOutputBtn"Content="Speech"HorizontalAlignment="Left"Margin="142,176,0,0"VerticalAlignment="Top"Click="getOutputBtn_Click"/>
     </Grid>
     </Grid>
    </phone:PhoneApplicationPage>


Write the following code in the Speech button's click event.

C# Code
Add the namespace:

  1. private async void getOutputBtn_Click(object sender, RoutedEventArgs e) 
    { 
     var speech = new SpeechSynthesizer(); 
     await speech.SpeakTextAsync(inputStringBox.Text.ToString()); 
    } 

The SpeakTextAsync() method is asynchronous. So we need to use the await keyword to do the operation.

Now build and run your application. Enter the text into the input box as you wish. Here I write “Welcome to C# corner”. Click the Speech button and listen to the voice.



Figure 2: Windows Phone 8

It works depending on your default settings that you set in your phone. You can change the voice format as male or female and the language is as shown in the following screen.

Go to Settings > Speech. Select the voice format.


BloomReach CMS: the API-first CMS of the future. Open-source & enterprise-grade. - As a Java developer, you will feel at home using Maven builds and your favorite IDE (e.g. Eclipse or IntelliJ) and continuous integration server (e.g. Jenkins). Manage your Java objects using Spring Framework, write your templates in JSP or Freemarker. Try for free.

Topics:

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}