一、利用api播放声音文件
vb.net版本
<DllImport("winmm.dll", EntryPoint:="PlaySound")> _
Public Shared Function PlaySound(ByVal pszSound As String, ByVal hmod As IntPtr, ByVal fdwSound As Integer) As Boolean
End Function
Enum PlayingFlags
SND_SYNC = &H0
SND_ASYNC = &H1
SND_NODEFAULT = &H2
SND_MEMORY = &H4
SND_LOOP = &H8
SND_NOSTOP = &H10
SND_NOWAIT = &H2000
SND_ALIAS = &H10000
SND_ALIAS_ID = &H110000
SND_FILENAME = &H20000
SND_RESOURCE = &H40004
End Enum
Protected Sub PlayWAV()
PlaySound("c:\自助选号1.wav", IntPtr.Zero, PlayingFlags.SND_NOWAIT)
End Sub
C#版本
public enum PlaySoundFlags : int
{
SND_SYNC = 0x0, // play synchronously (default)
SND_ASYNC = 0x1, // play asynchronously
SND_NODEFAULT = 0x2, // silence (!default) if sound not found
SND_MEMORY = 0x4, // pszSound points to a memory file
SND_LOOP = 0x8, // loop the sound until next sndPlaySound
SND_NOSTOP = 0x10, // don't stop any currently playing sound
SND_NOWAIT = 0x2000, // don't wait if the driver is busy
SND_ALIAS = 0x10000, // name is a registry alias
SND_ALIAS_ID = 0x110000,// alias is a predefined ID
SND_FILENAME = 0x20000, // name is file name
SND_RESOURCE = 0x40004, // name is resource name or atom
};
[DllImport("winmm.dll", SetLastError=true)]
public static extern bool PlaySound(string pszSound,System.IntPtr hmod,PlaySoundFlags flags);
PlaySound(@"C:\1.wav",IntPtr.Zero ,PlaySoundFlags.SND_ASYNC );
二、利用Media Player 播放
添加com组件 c:\windows\system32\wmp.dll
系统会在bin文件夹自动生成一个Interop.WMPLib.dll文件,在.net中添加这个dll的引用。
ms有sdk 地址是
http://download.microsoft.com/download/a/8/f/a8f5f4f4-397d-4a26-8abb-2d190998c029/WMPlayerSDK.exe
一开始是要下个什么验证码程序 (http://download.microsoft.com/download/8/3/d/83d1fe15-fe0f-4bdf-b09c-4e3c49808ec7/GenuineCheck.exe)
然后才出来这个这个sdk的地址
If Not mp Is Nothing Then
mp = New WindowsMediaPlayer
mp.controls.stop()
End If
mp.controls.stop()
mp.URL = wavPath
mp.controls.play() '开始播放语音提示
三、利用MS的Speech SDK 5.1
进行TTS
SDK 5.1地址
http://download.microsoft.com/download/speechSDK/SDK/5.1/WXP/EN-US/SpeechSDK51.exe
中文和日文语音包
http://download.microsoft.com/download/speechSDK/SDK/5.1/WXP/EN-US/SpeechSDK51LangPack.exe
添加com引用 C:\Program Files\Common Files\Microsoft Shared\Speech\sapi.dll
.Net会自动在bin文件夹下生成一个 Interop.SpeechLib.dll
部分代码:
Imports SpeechLib
Dim sp As New SpeechLib.SpVoice
If Me.CheckBox1.Checked Then
sp.Voice = sp.GetVoices("language=409", String.Empty).Item(0) '英语
Else
sp.Voice = sp.GetVoices("language=804", String.Empty).Item(0) '中文
End If
sp.Speak(Me.TextBox1.Text, SpeechVoiceSpeakFlags.SVSFDefault)
浙公网安备 33010602011771号