private void Button_Read_Click(object sender, RoutedEventArgs e) { if (Checked == false) { return; } var voicer = AnnouncerSelector.SelectedValue.ToString(); var content = InputContent.Text; var volume = VolumeRangSeleclor.Value; var rate = RateRangSeleclor.Value; VoiceReader.Speak(VoiceReader.Reader.Microsoft, voicer, content, volume, rate); }
private void Button_Save_Click(object sender, RoutedEventArgs e) { if (Checked == false) { return; } var voicer = AnnouncerSelector.SelectedValue.ToString(); var content = InputContent.Text.Trim(); var volume = VolumeRangSeleclor.TabIndex; var rate = RateRangSeleclor.TabIndex; var title = (content.Length > 100 ? content.Substring(0, 100) : content).Replace(" ", string.Empty).Replace("\r", string.Empty).Replace("\n", string.Empty); var path = $"{AppDomain.CurrentDomain.BaseDirectory}\\Record\\{title}.wav"; VoiceReader.Generated(VoiceReader.Reader.Microsoft, voicer, content, path, volume, rate); MessageBox.Show($"保存录音文件成功,保存路径:{path}!"); }
internal bool Speech(Entity admin, [CommandArgument("음성으로 출력할 메시지", CommandArgumentOption.AfterAll)] string message) { if (string.IsNullOrWhiteSpace(message)) { return(false); } VoiceReader.Read(message).ContinueWith(task => { var bytes = task.Result; var session = admin.GetSession(); session.Send(new VoiceMsg { Id = admin.Id, Mp3 = bytes }); }); return(true); }
private async void DoSpeech(string userName, string message) { try { // 먼저 채팅 메시지를 전파한 후, BroadcastChatMsgWithLock(userName, message); var mp3Bytes = await VoiceReader.Read(message); var mp3Base64 = Convert.ToBase64String(mp3Bytes); // 시간 차이가 좀 크겠지만, Mp3 메시지를 전달한다. BroadcastCommandMsgWithLock(InterChatCommandType.Speech, mp3Base64); } catch (Exception e) { Logger.Write(e); } }