端午节快乐!送TTS发音代码,求意见!

bcrun 2013-06-12 11:20:35
加精
?speak("端午节快乐!")

Option Explicit
Public Function ExtractFileName(ByVal strText As String) As String
Dim iPos As Integer
iPos = InStrRev(strText, "\")
ExtractFileName = VBA.Mid$(strText, iPos + 1)

End Function

'---------------------------------------------------------------------------------------
' 过程名 : Speak
' 时间 : 2013/6/9
' 作者 : 杨过.网狐.cn(csdn bcrun)
' 功能 : 调用Microsoft Speech读出一段文字(中英文不限)
' 参数 : strText 要朗读的文本,返回值true为成功
' 说明 : 因为暂时还不知道更好的选择合适中文语音库的办法,这里采用了strShortVoiceId参数和查找特殊字符串的办法
' 备注 : 星辰设计室VB一群:283362041,星辰学园BASIC辅导群:289219875
' TTS语音包下载: http://g.iciba.com/dictdown/tts.html
'---------------------------------------------------------------------------------------

Public Function Speak(ByVal strText As String, Optional ByVal strShortVoiceId As String = "MS-Lili-2052-20-DSK") As Boolean
'Dim objVoice As SpeechLib.SpVoice, colVoice As ISpeechObjectTokens
Dim objVoice As Object, colVoice As Object
Dim strSlice As String, cnVoice As Long
Dim i As Integer
On Error GoTo Speak_Error

Speak = False
'Set objVoice = New SpeechLib.SpVoice
Set objVoice = CreateObject("SAPI.SpVoice")
Set colVoice = objVoice.GetVoices() '获得语音引擎集合
cnVoice = colVoice.Count
objVoice.Volume = 100 '设置音量,0到100,数字越大音量越大
objVoice.Rate = 1
' Set objVoice.Voice = colVoice.Item(cnVoice - 1)
Dim oVoiceItem As Object, sTokenId As String
For i = 0 To colVoice.Count - 1
Set oVoiceItem = colVoice.Item(i)
'下面是取得形如这样的字符串的最后面一部分:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MS-Anna-1033-20-DSK

sTokenId = ExtractFileName(oVoiceItem.Id)
If (StrComp(sTokenId, strShortVoiceId) = 0) Then
Set objVoice.Voice = oVoiceItem
Exit For

Else
If (InStr(1, sTokenId, "2052") > 0) _
Or (InStr(1, sTokenId, "chinese", VbCompareMethod.vbTextCompare) > 0) Then
Set objVoice.Voice = oVoiceItem
Exit For

End If
End If
Next i
If (objVoice.Voice Is Nothing) Then Exit Function
Debug.Print objVoice.Rate
Dim lTime1 As Long, lTime2 As Long
'lTime1 = GetTickCount
'strText = "Welcome to use Kingsoft Powerword"
Call objVoice.Speak(strText) ', SVSFlagsAsync
'lTime2 = GetTickCount
'Debug.Print "Time used: " & (lTime2 - lTime1)
Speak = True

On Error GoTo 0
Exit Function

Speak_Error:

'MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Speak of Module mdlCommon"
End Function

...全文
4037 74 打赏 收藏 转发到动态 举报
写回复
用AI写文章
74 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxxcyy 2013-08-15
  • 打赏
  • 举报
回复
Microsoft Speech的语音库在哪里下,xp下的男声太难听了
独立级IT民工 2013-06-29
  • 打赏
  • 举报
回复
永远的VB........
开拓工作室 2013-06-24
  • 打赏
  • 举报
回复
值得学习
bcrun 2013-06-21
  • 打赏
  • 举报
回复
引用 62 楼 chenjl1031 的回复:
微软的语音库是哪个版本的,是否5.1版本的?我正好有这个版本的。
XP和2003下应该是装这个,vista,win7以上是自带了更高版本的,不用再装了
核007 2013-06-20
  • 打赏
  • 举报
回复
我顶,好文章!!
starcraft8899 2013-06-20
  • 打赏
  • 举报
回复
早知。也顶。
hlxtg 2013-06-19
  • 打赏
  • 举报
回复
u011112846 2013-06-18
  • 打赏
  • 举报
回复
谢谢分享!!!!!!!!!!!!!!!!!!
东方之珠 2013-06-18
  • 打赏
  • 举报
回复
微软的语音库是哪个版本的,是否5.1版本的?我正好有这个版本的。
u011101034 2013-06-17
  • 打赏
  • 举报
回复
谢谢分享!!!!!!!!!!!!!!!!!!
眼镜小哥 2013-06-16
  • 打赏
  • 举报
回复
端午节快乐,我没意见。
u011092162 2013-06-16
  • 打赏
  • 举报
回复
学习了 楼主很厉害啊 学习
u011083540 2013-06-16
  • 打赏
  • 举报
回复
端午节快乐!!!哈哈!
wyf4444 2013-06-16
  • 打赏
  • 举报
回复
不错啊学习中啊谢谢
jackie0924 2013-06-14
  • 打赏
  • 举报
回复
谢谢分享!!!!!!!!!!
u011062983 2013-06-14
  • 打赏
  • 举报
回复
强大!!~!~!~!~!~
u011011169 2013-06-14
  • 打赏
  • 举报
回复
谢谢,好好学习一下
u011060292 2013-06-14
  • 打赏
  • 举报
回复
端午节快乐
SONG_CA 2013-06-14
  • 打赏
  • 举报
回复
做个记号,谢
u011050857 2013-06-13
  • 打赏
  • 举报
回复
什么情况 啊啊啊啊啊 啊啊
加载更多回复(37)

863

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧