Introduction

Windows Phone supports voice input as well as voice output. In this article we will learn how to convert text into speech in Windows Phone 8. This feature is also known as Text-To-Speech (TTS) . You can use it in your application for pronouncing the text. Let's see how to use this feature in our app.

Speech Synthesis Namespace

The Windows.phone.Speech.Synthesis namespace contains the text to speech functionality. It consists of the following classes:

Speak Text Async Method

Implementing TTS

The following code snippet implements the text to speech feature:

XAML

<phone:PhoneApplicationPage

x:Class="Demo.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-->

<Grid x:Name="LayoutRoot" Background="Transparent">

<Grid.RowDefinitions>

<RowDefinition Height="Auto"/>

<RowDefinition Height="*"/>

</Grid.RowDefinitions>

<!--TitlePanel contains the name of the application and page title-->

<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">

<TextBlock Text="Demo" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>

<TextBlock Text="TTS Demo" Margin="9,-7,0,0" FontSize="40"/>

</StackPanel>

<!--ContentPanel - place additional content here-->

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

<Button Name="startBtn" Click="startBtn_Click" Content="Start" HorizontalAlignment="Left" Margin="10,0,0,10" Width="446" Height="72" VerticalAlignment="Bottom"/>

<TextBox Name="txtArea" Text="Text To Speak" HorizontalAlignment="Left" Height="567" Margin="10,0,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="446" InputScope="Text" />

</Grid>

</Grid>

</phone:PhoneApplicationPage>

C# Code Behind

using Microsoft.Phone.Controls;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using Windows.Phone.Speech.Synthesis;

namespace Demo

{

public partial class MainPage : PhoneApplicationPage

{

// Constructor

public MainPage()

{

InitializeComponent();

}

private async void startBtn_Click(object sender, RoutedEventArgs e)

{

SpeechSynthesizer s = new SpeechSynthesizer(); // New TTS Instance

await s.SpeakTextAsync(txtArea.Text); // Start TTS

}

}

}


Summary

TTS is a very useful feature that can be used creatively to create some wonderful apps. As a last note don't forget to set a ID_CAP_SPEECH_RECOGNITION Capablity in your app manifest.