報時分兩種:
明星報時,也就是播放固定的語音檔;
語音報時,通過文字轉語音達到目的;
播放語音檔
C#類System.Media. SoundPlayer可實現.wav檔的播放控制。

 

/// <summary>

 

/// 播放音訊檔

 

/// </summary>

 

/// <param name="fileInfo">wav檔路徑</param>

 

private void PlayAudio(string fileInfo)

 

{

 

SoundPlayer player = new SoundPlayer(fileInfo);

 

player.Play();

 

}

 

但是無法播放wma,mp3等音訊。
因為我下載到的明星報時語音包多以wma和mp3為主,所以我使用另外一種方式來播放。

 

[System.Runtime.InteropServices.DllImport("winmm.dll")]

 

public static extern uint mciSendString(string lpstrCommand, string lpstrReturnString, uint uReturnLength, uint hWndCallback);




private void PlayAudioByAPI(string file)

 

{

 

mciSendString(@"close temp_alias", null, 0, 0);

 

mciSendString("open \"" + file + "\" alias temp_alias", null, 0, 0);

 

mciSendString("play temp_alias", null, 0, 0);

 

}

 

這裡使用了WindowsMediaPlayer的API,實現音訊檔的播放。只要你的WMP能播的音訊,就能在你程式中播放。
文字轉語音
Windows有文字轉語音功能,C#提供了調用的類庫Interop.SpeechLib.dll。
使用方法很簡單,在你的專案中添加Interop.SpeechLib.dll引用,在類中引用:
using SpeechLib;
添加方法:

 

private void Speek(string message)

 

{

 

try

 

{

 

SpVoice Voice = new SpVoice();

 

Voice.Voice = Voice.GetVoices().Item(0);

 

Voice.Speak(message, SpeechVoiceSpeakFlags.SVSFlagsAsync);

 

}

 

catch (Exception ex)

 

{

 

//TODO

 

}

 

}

 

Voice.GetVoices().Item(0); 可以通過下標選擇不同的語音引擎,這取決於你電腦上安裝的語音引擎數量;
注:在Win7系統以前,windows系統預設沒有安裝語音包(可打開「控制台」->「語音辨識」->「文字轉換語音」查看),若沒有語音包,則此功能無法實現
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()