2013-07-29 2 views
2

Я создал раскадровку с несколькими движущимися элементами/объектами, и я хочу добавить SpeechSynthesizer в Раскадровку.SpeechSynthesizer in Storyboard

Возможно ли это? Я работаю над C#.

Storyboard myStoryboard=new Storyboard(); 

SpeechSynthesizer reader = new SpeechSynthesizer(); 
reader.Speak("This is my first speech project"); /* instead of speak I want 
                to add this into the storyboard 
..... 

myStoryboard.Children.Add(readerAnimation); 

Или есть способ добавить аудио в раскадровку?

+0

SpeechSynthesizer Я не элемент Framework, поэтому вы не можете его оживить, вы просто ищете способ анимировать текст на экране? –

+0

Нет. Я хочу включить SpeechSynthesizer в раскадровку. В принципе у меня есть раскадровка, которая включает в себя множество анимаций. Я хочу добавить в него также SpeechSynthesizer. – galaxias

+0

и что вы ожидаете, даже если бы вы могли добавить его, ничего не получится, SpeechSynthesizer - это просто класс, –

ответ

2

Если вы желаете использовать аудиофайл, вы можете использовать класс MediaTimeLine. Затем вы можете использовать один из методов SpeachSynthesizer's SetOutputToWaveFile для создания своего файла.

Сохранение waveFile Измененный 2 Ссылки:

using (SpeechSynthesizer synth = new SpeechSynthesizer()) 
{ 
    synth.SetOutputToWaveFile(@"C:\temp\Sample.wav"); 
    PromptBuilder builder = new PromptBuilder(); 
    builder.AppendText("Hello World !"); 
    synth.Speak(builder); 
} 

Xaml

модифицированном от первой Ссылки для воспроизведения файла

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="100" Width="200"> 
    <StackPanel Background="Black"> 
     <Label Name="clickMe" Content="Click Me" Foreground="White" FontFamily="Arabic Typesetting" FontSize="20" HorizontalContentAlignment ="Center" /> 
     <MediaElement Name="myMediaElement" Width="0" Height="0" /> 
     <StackPanel.Triggers> 
      <EventTrigger RoutedEvent="FrameworkElement.MouseDown" SourceName="clickMe"> 
       <EventTrigger.Actions> 
        <BeginStoryboard Name= "myBegin"> 
         <Storyboard x:Name="myStoryBoard" SlipBehavior="Slip"> 
          <MediaTimeline Source="C:\temp\Sample.wav" Storyboard.TargetName="myMediaElement" /> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger.Actions> 
      </EventTrigger> 
     </StackPanel.Triggers> 
    </StackPanel> 
</Window> 

Имейте в виде, что когда-то Раскадровка играет файл, он будет поддерживать блокировку.

Смежные вопросы