SoundPlayApi.GetInstance().Speak("未识别到体温,请退出重试");
SoundPlayApi.GetInstance().PlayVoice(@"voice\未测到体温.wav");
using System;
using System.Media;
using System.Speech.Synthesis;
namespace SoudPlayCom
{
public class SoundPlayApi
{
public static SoundPlayApi GetInstance()
{
if (instance == null)
{
instance = new SoundPlayApi();
}
return instance;
}
private SoundPlayApi()
{
player = new SoundPlayer();
_SpeechSynthesizer = new SpeechSynthesizer();
try
{
_SpeechSynthesizer.SetOutputToDefaultAudioDevice();
}
catch (Exception ex)
{
}
app_path = System.AppDomain.CurrentDomain.BaseDirectory;
}
private string app_path;
private static SoundPlayApi instance;
private SoundPlayer player;
private SpeechSynthesizer _SpeechSynthesizer;
public Prompt CurrentPrompt { get; set; }
public bool PlayVoice(string file_path)
{
if (DateTime.Now.Hour == 12 || DateTime.Now.Hour == 13)
{
return true;
}
if (System.IO.File.Exists(file_path))
{
player.Stop();
//存在文件
player.SoundLocation = app_path + file_path;
player.Play();//简单播放一遍
}
else
{
return false;
}
return true;
//player.PlayLooping();//循环播放
//player.PlaySync();//另起线程播放
}
public bool Speak(string txt)
{
if (DateTime.Now.Hour == 12 || DateTime.Now.Hour == 13)
{
return true;
}
if (string.IsNullOrEmpty(txt))
{
return false;
}
CancelCurrentPrompt();
try
{
_SpeechSynthesizer.Volume = 100;
CurrentPrompt = _SpeechSynthesizer.SpeakAsync(txt);
}
catch (Exception ex)
{
return false;
}
return true;
}
private void CancelCurrentPrompt()
{
if (CurrentPrompt != null)
{
try
{
_SpeechSynthesizer.SpeakAsyncCancel(CurrentPrompt);
}
catch (Exception ex)
{
}
}
CurrentPrompt = null;
}
}
}