网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
11月24日漏签0天
vb吧 关注:156,060贴子:1,166,223
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 5回复贴,共1页
<<返回vb吧
>0< 加载中...

.NET下实现文本的语音朗读、暂停、继续、终止

  • 只看楼主
  • 收藏

  • 回复
  • dfk1979
  • 啥也不懂
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
以下是VS2013下测试通过的完整代码
Public Class Form1
Public Voice As New SpeechLib.SpVoice
' Public Voice As SpVoice '引用Sapi.dll
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Button1_Click(1, e)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TextBox1.Text = "Hello word!... 欢迎试用ABC 100!"
'Me.Text = "[默认语音库:" & Voice.GetVoices.Item(0).GetDescription & "]" ' 注册表项:Voice.GetVoices.Item(0).Id,描述:Voice.GetVoices.Item(0).GetDescription,语音类型总数:Voice.GetVoices.Count
Voice.Volume = 100 '设置音量,0到100
Voice.Rate = Val(0) '速度范围-10~+10,数字越小速度越慢
Voice.Voice = Voice.GetVoices([String].Empty, [String].Empty).Item(0) 'Item(0)中文,Item(1)英文
Voice.Speak(TextBox1.Text, SpeechLib.SpeechVoiceSpeakFlags.SVSFlagsAsync)
'SpeechVoiceSpeakFlags参数
'SVSFDefault:默认值 0
' 读取给定的文本,被SVSFlagsAsync(异步)重写。
' 在播放期间的请求不会被清空,被SVSFPurgeBeforeSpeak重写。
' 只有当指定的文本以“<”开头才会使用XML方式解析,被SVSFIsXML和SVSFIsNotXML重写。
' 不保留全局XML状态变化...,被SVSFPersistXML重写。
' 标点符号不扩展为单词,被SVSFNLPSpeakPunc重写。
'SVSFlagsAsync:播报调用为异步,所以播报请求一发送,就马上回应。1(指定的讲调用应该是异步的。也就是说,它会立即返回排队的讲请求后。)
'SVSFPurgeBeforeSpeak:在播报期间,不接受其他的播报请求。2(清除所有悬而未决的发言请求,在此之前讲的呼叫。)
'SVSFIsFilename:说话方式传递的字符串是一个文件名,而不是文字。其结果,没有发言字符串本身而是该文件的路径,该路径是口头的处理。4
'SVSFIsXML:文本以XML形式解析。8
'SVSFIsNotXML:文本不以XML形式解析。16
'SVSFPersistXML:XML标记的全局状态的变化将持续到说话的呼叫。32
'SVSFNLPSpeakPunc:把标点符号也读出来。64 标点符号应扩大到字(例如:“这是什么。”将成为“这是这期”)。
'SVSFVoiceMask:此面膜具有每一个标志位设置。 127
'SVSFUnusedFlags:此面膜具有每一个未使用的位集。128
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
If Button2.Text = "暂停" Then
Button2.Text = "继续"
Voice.Pause()
Else
Button2.Text = "暂停"
Voice.Resume()
End If
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Voice.Speak(String.Empty, SpeechLib.SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak)
End Sub
End Class


  • dfk1979
  • 啥也不懂
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个是我在VB.NET中试着吧VB6移植到.NET的时候写的测试代码段 为了方便大家阅读和改写 我已经做了一些注释


2025-11-24 14:01:23
广告
不感兴趣
开通SVIP免广告
  • 璐村惂鐢ㄦ埛_0748V5Z馃惥
  • 网络通信
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
表示不懂


  • dfk1979
  • 啥也不懂
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
要是不能运行 你看看主机有没有在程序里引用库哦
窗体里只有一个文本框和三个按钮
控件每缺的话 需要这样操作:在菜单的“项目”-“添加引用”-“com”-“类型库”-勾选“Microsoft Speech Object Library”
点完“确定”再试试吧


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 5回复贴,共1页
<<返回vb吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示