Name="trbVolume"Orientation="Vertical"
Minimum="0"
Maximum="10"
IsMoveToPointEnabled="True"
AutoToolTipPrecision="2"AutoToolTipPlacement="BottomRight"
TickPlacement="BottomRight"
Ticks="1,2,3,4,5,6,7,8,9,10"
IsSelectionRangeEnabled="true"
SelectionStart="1"SelectionEnd="9"
HorizontalAlignment="Left"Margin="426,51,0,0"VerticalAlignment="Top"Height="103"ValueChanged="trbVolume_ValueChanged"Background="#FFF2EFF3"/>
6.2功能代码
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingSystem.Windows;
usingSystem.Windows.Controls;
usingSystem.Windows.Data;
usingSystem.Windows.Documents;
usingSystem.Windows.Input;
usingSystem.Windows.Media;
usingSystem.Windows.Media.Imaging;
usingSystem.Windows.Navigation;
usingSystem.Windows.Shapes;
usingDotNetSpeech;//cs文件中引入库
namespaceWpfSpeechDemo
{
///
///MainWindow.xaml的交互逻辑
///
publicpartialclassMainWindow:
Window
{
SpVoicespeech=newSpVoice();
intspeechRate=0;
intvolume=70;
publicMainWindow()
{
InitializeComponent();
init();
}
privatevoidinit()
{
//初始化语音引擎列表
foreach(ISpeechObjectTokenTokeninspeech.GetVoices(string.Empty,string.Empty))
{
cmbVoices.Items.Add(Token.GetDescription(49));
}
//取得音频输出列表
foreach(ISpeechObjectTokenAudioOutinspeech.GetAudioOutputs(string.Empty,string.Empty))
{
cmbAudioOut.Items.Add(AudioOut.GetDescription(49));
}
cmbVoices.SelectedIndex=0;
cmbAudioOut.SelectedIndex=0;
tbarRate.Value=speechRate;
trbVolume.Value=volume;
}
privatevoidtbarRate_Scroll(objectsender,EventArgse)
{
speech.Rate=(int)tbarRate.Value;
}
privatevoidtrbVolume_Scroll(objectsender,EventArgse)
{
speech.Volume=(int)trbVolume.Value;
}
privatevoidcmbVoices_SelectionChanged(objectsender,SelectionChangedEventArgse)
{
speech.Voice=speech.GetVoices(string.Empty,string.Empty).Item(cmbVoices.SelectedIndex);
}
privatevoidcmbAudioOut_SelectionChanged(objectsender,SelectionChangedEventArgse)
{
speech.AudioOutput=speech.GetAudioOutputs(string.Empty,string.Empty).Item(cmbAudioOut.SelectedIndex);
}
privatevoidbt_speek_Click(objectsender,EventArgse)
{
//终止先前朗读,如果有
speech.Speak("",SpeechVoiceSpeakFlags.SVSFlagsAsync);
speech.Speak(tbspeech.Text,SpeechVoiceSpeakFlags.SVSFlagsAsync);
}
privatevoidbt_stop_Click(objectsender,EventArgse)
{
speech.Speak("",SpeechVoiceSpeakFlags.SVSFlagsAsync);
}
privatevoidtbarRate_ValueChanged(objectsender,RoutedPropertyChangedEventArgse)
{
speech.Rate=(int)e.NewValue;
}
privatevoidtrbVolume_ValueChanged(objectsender,RoutedPropertyChangedEventArgse)
{
speech.Volume=(int)e.NewValue;
}
}
}