以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 如何可以将朗读结果录制为一个wav文件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89304)

--  作者:KWK001
--  发布时间:2016/8/18 20:29:00
--  [求助] 如何可以将朗读结果录制为一个wav文件

按照示例六的代码,我想用示例七 朗读出来的结果,自定义保存路径,请问如何做呢?
图片点击可在新窗口打开查看此主题相关图片如下:捕获.jpg
图片点击可在新窗口打开查看

根据示例可以列出已经安装的语音库,客户用已选择语音库,设置语速,并可选择是异步还是同步朗读,然后自定义保存路径。


--  作者:KWK001
--  发布时间:2016/8/18 20:59:00
--  
有老师在吗


--  作者:大红袍
--  发布时间:2016/8/18 21:14:00
--  

 做一个按钮

 

Dim dlg As new SaveFileDialog
dlg.Filter = "语音|*.wav"
If dlg.ShowDialog = DialogResult.OK Then
    Dim yy As WinForm.ListBox = e.Form.Controls("ListBox1")
    Dim vl As String = e.Form.Controls("txtContent").Value \'获得要朗读的文本
    Speaker.Rate = e.Form.Controls("boxSpeed").Value \'设置语速
    Speaker.Voice = Speaker.GetVoices(String.Empty,String.Empty).Item(yy.SelectedIndex) \'选择语音库
    Speaker.Speak("", DotNetSpeech.SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak) \'停止之前的朗读
   
    Dim Stream As new DotNetSpeech.SpFileStreamClass()
    Stream.Open(dlg.FileName, DotNetSpeech.SpeechStreamFileMode.SSFMCreateForWrite, False)
    Speaker.AudioOutputStream = Stream
   
    If  e.Form.Controls("rdoAsync").Checked Then
        Speaker.Speak(vl, DotNetSpeech.SpeechVoiceSpeakFlags.SVSFlagsAsync) \'异步朗读
    Else
        Speaker.Speak(vl, DotNetSpeech.SpeechVoiceSpeakFlags.SVSFDefault) \'同步朗读
    End If
    Stream.Close()
End If


--  作者:KWK001
--  发布时间:2016/8/18 22:55:00
--  
大红袍老师,代码实施后,无声音。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:语音朗读.table


--  作者:大红袍
--  发布时间:2016/8/18 23:11:00
--  

哦,不能用异步,必须用同步

 

Dim dlg As new SaveFileDialog
dlg.Filter = "语音|*.wav"
If dlg.ShowDialog = DialogResult.OK Then
    Dim yy As WinForm.ListBox = e.Form.Controls("ListBox1")
    Dim vl As String = e.Form.Controls("txtContent").Value \'获得要朗读的文本
    Speaker.Rate = e.Form.Controls("boxSpeed").Value \'设置语速
    Speaker.Voice = Speaker.GetVoices(String.Empty,String.Empty).Item(yy.SelectedIndex) \'选择语音库
    Speaker.Speak("", DotNetSpeech.SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak) \'停止之前的朗读
   
    Dim Stream As new DotNetSpeech.SpFileStreamClass()
    Stream.Open(dlg.FileName, DotNetSpeech.SpeechStreamFileMode.SSFMCreateForWrite, False)
    Speaker.AudioOutputStream = Stream
   
   
    Speaker.Speak(vl, DotNetSpeech.SpeechVoiceSpeakFlags.SVSFDefault) \'同步朗读
    Stream.Close()
End If


--  作者:wangyinming
--  发布时间:2016/8/18 23:16:00
--  

[此贴子已经被作者于2016/8/18 23:26:21编辑过]

--  作者:wangyinming
--  发布时间:2016/8/18 23:24:00
--  

[此贴子已经被作者于2016/8/18 23:26:35编辑过]

--  作者:大红袍
--  发布时间:2016/8/18 23:26:00
--  

 试听,第一行,加上

 

speaker = New DotNetSpeech.SpVoice()


--  作者:KWK001
--  发布时间:2016/8/18 23:38:00
--  
谢谢!大师 !  这么晚,幸苦了!