| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- #include "../pch/pch.h"
- #include "CVoiceWorker.h"
- #include "mmsystem.h"
- #include "../helper/CSpeech.h"
- #include "../tool/CAppEnv.h"
- CVoiceWorker::CVoiceWorker()
- {
- }
- CVoiceWorker::~CVoiceWorker()
- {
- }
- void CVoiceWorker::Start()
- {
- m_is_work = true;
- //处理声音提醒
- std::thread(&CVoiceWorker::HandleVoice, this).detach();
- CAppEnv::GetInstance()->AddWorkerNum();
- //处理文字转语音
- std::thread(&CVoiceWorker::HandleVoiceContent, this).detach();
- CAppEnv::GetInstance()->AddWorkerNum();
- }
- void CVoiceWorker::Stop()
- {
- m_is_work = false;
- }
- void CVoiceWorker::AddVoice(int voice_type)
- {
- m_voice_mutex.lock();
- m_voice_queue.push(voice_type);
- m_voice_mutex.unlock();
- }
- //文字转语音播放
- void CVoiceWorker::AddVoice(std::string voiceContent)
- {
- m_voice_mutex.lock();
- m_voice_content_queue.push(voiceContent);
- m_voice_mutex.unlock();
- }
- void CVoiceWorker::HandleVoice()
- {
- while (m_is_work)
- {
- m_voice_mutex.lock();
- if (m_voice_queue.empty())
- {
- m_voice_mutex.unlock();
- Sleep(100);
- continue;
- }
- int voice_type = m_voice_queue.front();
- m_voice_queue.pop();
- m_voice_mutex.unlock();
- if (voice_type == 1)
- {
- std::wstring path = CSystem::GetProgramDir() + L"\\music\\waimai_new.wav";
- PlaySound(path.c_str(), NULL, SND_FILENAME | SND_ASYNC);
- }
- else if (voice_type == 2)
- {
- std::wstring path = CSystem::GetProgramDir() + L"\\music\\waimai_new_auto.wav";
- PlaySound(path.c_str(), NULL, SND_FILENAME | SND_ASYNC);
- }
- else if (voice_type == 3)
- {
- std::wstring path = CSystem::GetProgramDir() + L"\\music\\waimai_quxiao.wav";
- PlaySound(path.c_str(), NULL, SND_FILENAME | SND_ASYNC);
- }
- else if (voice_type == 4)
- {
- std::wstring path = CSystem::GetProgramDir() + L"\\music\\waimai_tuikuan.wav";
- PlaySound(path.c_str(), NULL, SND_FILENAME | SND_ASYNC);
- }
- else if (voice_type == 5)
- {
- std::wstring path = CSystem::GetProgramDir() + L"\\music\\diannei_new.wav";
- PlaySound(path.c_str(), NULL, SND_FILENAME | SND_ASYNC);
- }
- else if (voice_type == 6)
- {
- std::wstring path = CSystem::GetProgramDir() + L"\\music\\zhengcan_h5_diancai.wav";
- PlaySound(path.c_str(), NULL, SND_FILENAME | SND_ASYNC);
- }
- //8秒内最多播放一次
- //CSystem::my_sleep(8);
- }
- CAppEnv::GetInstance()->DelWorkerNum();
- }
- //处理文字转语音的
- void CVoiceWorker::HandleVoiceContent()
- {
- while (m_is_work)
- {
- m_voice_mutex.lock();
- if (m_voice_content_queue.empty())
- {
- m_voice_mutex.unlock();
- Sleep(100);
- continue;
- }
- std::string content = m_voice_content_queue.front();
- m_voice_content_queue.pop();
- m_voice_mutex.unlock();
- //进行播放
- std::wstring ws_content = CLewaimaiString::UTF8ToUnicode(content);
- CSpeech::MSSSpeak(ws_content.c_str());
- }
- CAppEnv::GetInstance()->DelWorkerNum();
- }
|