Option Explicit
Private M As SpeechLib.SpVoice 'M is a male voice
Private F As SpeechLib.SpVoice 'F is a female voice
Private S As SpeechLib.SpFileStream
Private Sub Command1_Click()
'Build a local file path and open it as a stream
Set S = New SpFileStream
Call S.Open("C:\SpeakStream.wav", SSFMCreateForWrite, False)
'Female voice speaks into the file stream and creates a WAV file
Set F.AudioOutputStream = S
F.Speak "cee : \ speak stream dot wave", SVSFNLPSpeakPunc
S.Close
'Male voice speaks female voice's stream
Call S.Open("C:\SpeakStream.wav", , False)
M.Speak "i will now demonstrate the speak stream method."
M.SpeakStream S
M.Speak "that sounded like " & F.Voice.GetDescription & ", but it was me."
End Sub
Private Sub Form_Load()
'Create voices
Set F = New SpVoice
Set F.Voice = F.GetVoices("gender=female").Item(0)
Set M = New SpVoice
Set M.Voice = M.GetVoices("gender=male").Item(0)
End Sub
谢谢。
10 个解决方案
#1
//声明ole对象
oleobject M, F, S
//创建ole对象
M = CREATE OLEObject
IF M.ConnectToNewObject("SAPI.SpVoice") <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!')
M.DisconnectObject()
DESTROY M
end if
F = CREATE OLEObject
IF F.ConnectToNewObject("SAPI.SpVoice") <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!')
F.DisconnectObject()
DESTROY F
end if
S = CREATE OLEObject
IF S.ConnectToNewObject("SAPI.SpFileStream") <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!')
S.DisconnectObject()
DESTROY S
end if
//调用
constant ulong SSFMCreateForWrite = 3
S.Open(("C:\SpeakStream.wav", SSFMCreateForWrite, false)
F.AudioOutputStream = S
F.Speak("cee : \ speak stream dot wave")
S.Close()
oleobject M, F, S
//创建ole对象
M = CREATE OLEObject
IF M.ConnectToNewObject("SAPI.SpVoice") <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!')
M.DisconnectObject()
DESTROY M
end if
F = CREATE OLEObject
IF F.ConnectToNewObject("SAPI.SpVoice") <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!')
F.DisconnectObject()
DESTROY F
end if
S = CREATE OLEObject
IF S.ConnectToNewObject("SAPI.SpFileStream") <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!')
S.DisconnectObject()
DESTROY S
end if
//调用
constant ulong SSFMCreateForWrite = 3
S.Open(("C:\SpeakStream.wav", SSFMCreateForWrite, false)
F.AudioOutputStream = S
F.Speak("cee : \ speak stream dot wave")
S.Close()
#2
其他的参考
http://hi.baidu.com/adver/blog/item/7830454a71af922e09f7ef4f.html
http://cache.baidu.com/c?m=9d78d513d98111b8589cd53c594d89315812c0346f88c4523f8a9c12d52219564615fea627211213d3b27c6c16af3e57e1e7360534013dffdd94df0f9ca6d56a7bd379633101d117499504afc94527c3218d5aebac1be5bbf23590a8d1d3dc5044ca24472cd4&p=882a9343818a17f01fbfc7710d11cb&user=baidu
http://hi.baidu.com/adver/blog/item/7830454a71af922e09f7ef4f.html
http://cache.baidu.com/c?m=9d78d513d98111b8589cd53c594d89315812c0346f88c4523f8a9c12d52219564615fea627211213d3b27c6c16af3e57e1e7360534013dffdd94df0f9ca6d56a7bd379633101d117499504afc94527c3218d5aebac1be5bbf23590a8d1d3dc5044ca24472cd4&p=882a9343818a17f01fbfc7710d11cb&user=baidu
#3
谢谢。请问楼上M.SpeakStream是调用电脑上一个音乐文件的吗?
#4
SpVoiceClass详解
属性
描述
AlertBoundary
取得或设置停顿分界线。
AllowAudioOutputFormatChangesOnNextSet
设置是否允许声音自动调整到合适状态以适应其音频输出。
AudioOutput
.取得或设置当前声音使用的的音频输出对象
AudioOutputStream
取得或设置当前声音使用的的音频输出流对象。
EventInterests
取得或设置当前声音返回的事件类型。
Priority
取得或设置声音的优先级。
Rate
取得或设置阅读的速度。
Status
返回一个ISpeechVoiceStatus 对象用于显示当前阅读和事件的状态
SynchronousSpeakTimeout
取得或设置一个时间间隔,用于标识多久未获得一个输出设备后,一个同步的Speak 和SpeakStream将终止,以毫秒计算。
Voice
取得或设置发音对象。
Volume
取得或设置声音的大小 。
方法
描述
DisplayUI
是否在控制面板中展示详细设置。
GetAudioOutputs
返回一个可用的音频输出标记。
GetVoices
返回一个可用的发音对象。
IsUISupported
决定是否能通过控制棉板的音频设置来控制。
Pause
暂停朗读。.
Resume
恢复暂停,继续播放。
Skip
在当前输入的文本流中向前或向后跳一定距离再播放。
Speak
阅读一个字符串。
SpeakCompleteEvent
得到一个朗读完毕的时间句柄
SpeakStream
朗读一个文本流或一个声音文件。
WaitUntilDone
阻塞进程,直到声音播放完毕或者超时。
属性
描述
AlertBoundary
取得或设置停顿分界线。
AllowAudioOutputFormatChangesOnNextSet
设置是否允许声音自动调整到合适状态以适应其音频输出。
AudioOutput
.取得或设置当前声音使用的的音频输出对象
AudioOutputStream
取得或设置当前声音使用的的音频输出流对象。
EventInterests
取得或设置当前声音返回的事件类型。
Priority
取得或设置声音的优先级。
Rate
取得或设置阅读的速度。
Status
返回一个ISpeechVoiceStatus 对象用于显示当前阅读和事件的状态
SynchronousSpeakTimeout
取得或设置一个时间间隔,用于标识多久未获得一个输出设备后,一个同步的Speak 和SpeakStream将终止,以毫秒计算。
Voice
取得或设置发音对象。
Volume
取得或设置声音的大小 。
方法
描述
DisplayUI
是否在控制面板中展示详细设置。
GetAudioOutputs
返回一个可用的音频输出标记。
GetVoices
返回一个可用的发音对象。
IsUISupported
决定是否能通过控制棉板的音频设置来控制。
Pause
暂停朗读。.
Resume
恢复暂停,继续播放。
Skip
在当前输入的文本流中向前或向后跳一定距离再播放。
Speak
阅读一个字符串。
SpeakCompleteEvent
得到一个朗读完毕的时间句柄
SpeakStream
朗读一个文本流或一个声音文件。
WaitUntilDone
阻塞进程,直到声音播放完毕或者超时。
#5
可连续播放的MP3播放器 http://download.csdn.net//detail/newease/1734161
pb 多媒体 声音 播放 wav http://download.csdn.net/detail/newease/3302554
pb 多媒体 声音 播放 wav http://download.csdn.net/detail/newease/3302554
#6
你贴出来的代码的意思是
先用女声朗读"cee : \ speak stream dot wave",并存储为本地文件"C:\SpeakStream.wav"
然后再用SpeakStream(S)打开文件"C:\SpeakStream.wav"
然后用男声朗读流文件M.SpeakStream(S)
先用女声朗读"cee : \ speak stream dot wave",并存储为本地文件"C:\SpeakStream.wav"
然后再用SpeakStream(S)打开文件"C:\SpeakStream.wav"
然后用男声朗读流文件M.SpeakStream(S)
#7
oleobject tts
oleobject s
long ll_status
tts = CREATE OLEObject
ll_status = tts.ConnectToNewObject("SAPI.SpVoice")
IF ll_status <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!')
tts.DisconnectObject()
DESTROY tts
else
// wf_ini()
end if
s = CREATE OLEObject
IF S.ConnectToNewObject("SAPI.SpFileStream") <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!') //SpFileStream
S.DisconnectObject()
end if
long li_Ind
tts.speak(" ","2")
li_Index = ddlb_voice.SelectItem("Girl XiaoKun", 1) //调用系统语音库(普通话)
ddlb_voice.selectitem( li_Index )//调用系统语音库(普通话)
tts.voice=tts.GetVoices.item(li_Index -1)
//调用
constant ulong SSFMCreateForWrite = 0
S.Open("F:\bus_try\bus_jp_yy\music\005.mp3",1 , false) //打开MP3文件流
tts.SpeakStream( s ,1) //读出MP3音乐 ----可就是没有反应
--tts.SpeakStream( s ,1) //不能读出MP3音乐 WHY ?
DESTROY S
DESTROY ttS
oleobject s
long ll_status
tts = CREATE OLEObject
ll_status = tts.ConnectToNewObject("SAPI.SpVoice")
IF ll_status <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!')
tts.DisconnectObject()
DESTROY tts
else
// wf_ini()
end if
s = CREATE OLEObject
IF S.ConnectToNewObject("SAPI.SpFileStream") <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!') //SpFileStream
S.DisconnectObject()
end if
long li_Ind
tts.speak(" ","2")
li_Index = ddlb_voice.SelectItem("Girl XiaoKun", 1) //调用系统语音库(普通话)
ddlb_voice.selectitem( li_Index )//调用系统语音库(普通话)
tts.voice=tts.GetVoices.item(li_Index -1)
//调用
constant ulong SSFMCreateForWrite = 0
S.Open("F:\bus_try\bus_jp_yy\music\005.mp3",1 , false) //打开MP3文件流
tts.SpeakStream( s ,1) //读出MP3音乐 ----可就是没有反应
--tts.SpeakStream( s ,1) //不能读出MP3音乐 WHY ?
DESTROY S
DESTROY ttS
#8
原来SpeakStream( s ,1) //只能读.wav文件,不能读.MP3文件。切,不知道是否可以设置背景音乐?
知道的,能告诉一下吗?
知道的,能告诉一下吗?
#9
Mark and study
#10
学习ing
#1
//声明ole对象
oleobject M, F, S
//创建ole对象
M = CREATE OLEObject
IF M.ConnectToNewObject("SAPI.SpVoice") <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!')
M.DisconnectObject()
DESTROY M
end if
F = CREATE OLEObject
IF F.ConnectToNewObject("SAPI.SpVoice") <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!')
F.DisconnectObject()
DESTROY F
end if
S = CREATE OLEObject
IF S.ConnectToNewObject("SAPI.SpFileStream") <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!')
S.DisconnectObject()
DESTROY S
end if
//调用
constant ulong SSFMCreateForWrite = 3
S.Open(("C:\SpeakStream.wav", SSFMCreateForWrite, false)
F.AudioOutputStream = S
F.Speak("cee : \ speak stream dot wave")
S.Close()
oleobject M, F, S
//创建ole对象
M = CREATE OLEObject
IF M.ConnectToNewObject("SAPI.SpVoice") <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!')
M.DisconnectObject()
DESTROY M
end if
F = CREATE OLEObject
IF F.ConnectToNewObject("SAPI.SpVoice") <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!')
F.DisconnectObject()
DESTROY F
end if
S = CREATE OLEObject
IF S.ConnectToNewObject("SAPI.SpFileStream") <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!')
S.DisconnectObject()
DESTROY S
end if
//调用
constant ulong SSFMCreateForWrite = 3
S.Open(("C:\SpeakStream.wav", SSFMCreateForWrite, false)
F.AudioOutputStream = S
F.Speak("cee : \ speak stream dot wave")
S.Close()
#2
其他的参考
http://hi.baidu.com/adver/blog/item/7830454a71af922e09f7ef4f.html
http://cache.baidu.com/c?m=9d78d513d98111b8589cd53c594d89315812c0346f88c4523f8a9c12d52219564615fea627211213d3b27c6c16af3e57e1e7360534013dffdd94df0f9ca6d56a7bd379633101d117499504afc94527c3218d5aebac1be5bbf23590a8d1d3dc5044ca24472cd4&p=882a9343818a17f01fbfc7710d11cb&user=baidu
http://hi.baidu.com/adver/blog/item/7830454a71af922e09f7ef4f.html
http://cache.baidu.com/c?m=9d78d513d98111b8589cd53c594d89315812c0346f88c4523f8a9c12d52219564615fea627211213d3b27c6c16af3e57e1e7360534013dffdd94df0f9ca6d56a7bd379633101d117499504afc94527c3218d5aebac1be5bbf23590a8d1d3dc5044ca24472cd4&p=882a9343818a17f01fbfc7710d11cb&user=baidu
#3
谢谢。请问楼上M.SpeakStream是调用电脑上一个音乐文件的吗?
#4
SpVoiceClass详解
属性
描述
AlertBoundary
取得或设置停顿分界线。
AllowAudioOutputFormatChangesOnNextSet
设置是否允许声音自动调整到合适状态以适应其音频输出。
AudioOutput
.取得或设置当前声音使用的的音频输出对象
AudioOutputStream
取得或设置当前声音使用的的音频输出流对象。
EventInterests
取得或设置当前声音返回的事件类型。
Priority
取得或设置声音的优先级。
Rate
取得或设置阅读的速度。
Status
返回一个ISpeechVoiceStatus 对象用于显示当前阅读和事件的状态
SynchronousSpeakTimeout
取得或设置一个时间间隔,用于标识多久未获得一个输出设备后,一个同步的Speak 和SpeakStream将终止,以毫秒计算。
Voice
取得或设置发音对象。
Volume
取得或设置声音的大小 。
方法
描述
DisplayUI
是否在控制面板中展示详细设置。
GetAudioOutputs
返回一个可用的音频输出标记。
GetVoices
返回一个可用的发音对象。
IsUISupported
决定是否能通过控制棉板的音频设置来控制。
Pause
暂停朗读。.
Resume
恢复暂停,继续播放。
Skip
在当前输入的文本流中向前或向后跳一定距离再播放。
Speak
阅读一个字符串。
SpeakCompleteEvent
得到一个朗读完毕的时间句柄
SpeakStream
朗读一个文本流或一个声音文件。
WaitUntilDone
阻塞进程,直到声音播放完毕或者超时。
属性
描述
AlertBoundary
取得或设置停顿分界线。
AllowAudioOutputFormatChangesOnNextSet
设置是否允许声音自动调整到合适状态以适应其音频输出。
AudioOutput
.取得或设置当前声音使用的的音频输出对象
AudioOutputStream
取得或设置当前声音使用的的音频输出流对象。
EventInterests
取得或设置当前声音返回的事件类型。
Priority
取得或设置声音的优先级。
Rate
取得或设置阅读的速度。
Status
返回一个ISpeechVoiceStatus 对象用于显示当前阅读和事件的状态
SynchronousSpeakTimeout
取得或设置一个时间间隔,用于标识多久未获得一个输出设备后,一个同步的Speak 和SpeakStream将终止,以毫秒计算。
Voice
取得或设置发音对象。
Volume
取得或设置声音的大小 。
方法
描述
DisplayUI
是否在控制面板中展示详细设置。
GetAudioOutputs
返回一个可用的音频输出标记。
GetVoices
返回一个可用的发音对象。
IsUISupported
决定是否能通过控制棉板的音频设置来控制。
Pause
暂停朗读。.
Resume
恢复暂停,继续播放。
Skip
在当前输入的文本流中向前或向后跳一定距离再播放。
Speak
阅读一个字符串。
SpeakCompleteEvent
得到一个朗读完毕的时间句柄
SpeakStream
朗读一个文本流或一个声音文件。
WaitUntilDone
阻塞进程,直到声音播放完毕或者超时。
#5
可连续播放的MP3播放器 http://download.csdn.net//detail/newease/1734161
pb 多媒体 声音 播放 wav http://download.csdn.net/detail/newease/3302554
pb 多媒体 声音 播放 wav http://download.csdn.net/detail/newease/3302554
#6
你贴出来的代码的意思是
先用女声朗读"cee : \ speak stream dot wave",并存储为本地文件"C:\SpeakStream.wav"
然后再用SpeakStream(S)打开文件"C:\SpeakStream.wav"
然后用男声朗读流文件M.SpeakStream(S)
先用女声朗读"cee : \ speak stream dot wave",并存储为本地文件"C:\SpeakStream.wav"
然后再用SpeakStream(S)打开文件"C:\SpeakStream.wav"
然后用男声朗读流文件M.SpeakStream(S)
#7
oleobject tts
oleobject s
long ll_status
tts = CREATE OLEObject
ll_status = tts.ConnectToNewObject("SAPI.SpVoice")
IF ll_status <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!')
tts.DisconnectObject()
DESTROY tts
else
// wf_ini()
end if
s = CREATE OLEObject
IF S.ConnectToNewObject("SAPI.SpFileStream") <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!') //SpFileStream
S.DisconnectObject()
end if
long li_Ind
tts.speak(" ","2")
li_Index = ddlb_voice.SelectItem("Girl XiaoKun", 1) //调用系统语音库(普通话)
ddlb_voice.selectitem( li_Index )//调用系统语音库(普通话)
tts.voice=tts.GetVoices.item(li_Index -1)
//调用
constant ulong SSFMCreateForWrite = 0
S.Open("F:\bus_try\bus_jp_yy\music\005.mp3",1 , false) //打开MP3文件流
tts.SpeakStream( s ,1) //读出MP3音乐 ----可就是没有反应
--tts.SpeakStream( s ,1) //不能读出MP3音乐 WHY ?
DESTROY S
DESTROY ttS
oleobject s
long ll_status
tts = CREATE OLEObject
ll_status = tts.ConnectToNewObject("SAPI.SpVoice")
IF ll_status <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!')
tts.DisconnectObject()
DESTROY tts
else
// wf_ini()
end if
s = CREATE OLEObject
IF S.ConnectToNewObject("SAPI.SpFileStream") <> 0 THEN
messagebox('调用错误','您可能还未安装语音库!') //SpFileStream
S.DisconnectObject()
end if
long li_Ind
tts.speak(" ","2")
li_Index = ddlb_voice.SelectItem("Girl XiaoKun", 1) //调用系统语音库(普通话)
ddlb_voice.selectitem( li_Index )//调用系统语音库(普通话)
tts.voice=tts.GetVoices.item(li_Index -1)
//调用
constant ulong SSFMCreateForWrite = 0
S.Open("F:\bus_try\bus_jp_yy\music\005.mp3",1 , false) //打开MP3文件流
tts.SpeakStream( s ,1) //读出MP3音乐 ----可就是没有反应
--tts.SpeakStream( s ,1) //不能读出MP3音乐 WHY ?
DESTROY S
DESTROY ttS
#8
原来SpeakStream( s ,1) //只能读.wav文件,不能读.MP3文件。切,不知道是否可以设置背景音乐?
知道的,能告诉一下吗?
知道的,能告诉一下吗?
#9
Mark and study
#10
学习ing