forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			43 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			43 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
								 | 
							
								#ifdef KINC_WINDOWSAPP
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <Kore/Audio3/TextToSpeech.h>
							 | 
						||
| 
								 | 
							
								#include <Kore/Log.h>
							 | 
						||
| 
								 | 
							
								#include <ppltasks.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								using namespace Kore;
							 | 
						||
| 
								 | 
							
								using namespace Windows::Media::SpeechSynthesis;
							 | 
						||
| 
								 | 
							
								using namespace Windows::Media::Core;
							 | 
						||
| 
								 | 
							
								using namespace Windows::Media::Playback;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SpeechSynthesizer ^ speechSynthesizer;
							 | 
						||
| 
								 | 
							
								MediaPlayer ^ mediaPlayer;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void TextToSpeech::init() {
							 | 
						||
| 
								 | 
							
									speechSynthesizer = ref new SpeechSynthesizer();
							 | 
						||
| 
								 | 
							
									// auto voices = speechSynthesizer->AllVoices;
							 | 
						||
| 
								 | 
							
									// for (int i = 0; i < voices->Size; i++) {
							 | 
						||
| 
								 | 
							
									//	auto voiceInfo = voices->GetAt(i);
							 | 
						||
| 
								 | 
							
									//	OutputDebugStringW(voiceInfo->DisplayName->Data());
							 | 
						||
| 
								 | 
							
									//	OutputDebugStringW(voiceInfo->Description->Data());
							 | 
						||
| 
								 | 
							
									//}
							 | 
						||
| 
								 | 
							
									mediaPlayer = ref new MediaPlayer();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Platform::String ^
							 | 
						||
| 
								 | 
							
								    CharToString(const char *char_array) {
							 | 
						||
| 
								 | 
							
									    std::string s_str = std::string(char_array);
							 | 
						||
| 
								 | 
							
									    std::wstring wid_str = std::wstring(s_str.begin(), s_str.end());
							 | 
						||
| 
								 | 
							
									    const wchar_t *w_char = wid_str.c_str();
							 | 
						||
| 
								 | 
							
									    return ref new Platform::String(w_char);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    void TextToSpeech::speakText(const char *text) {
							 | 
						||
| 
								 | 
							
									concurrency::create_task(speechSynthesizer->SynthesizeTextToStreamAsync(CharToString(text))).then([](SpeechSynthesisStream ^ stream) {
							 | 
						||
| 
								 | 
							
										mediaPlayer->Source = MediaSource::CreateFromStream(stream, stream->ContentType);
							 | 
						||
| 
								 | 
							
										// mediaPlayer->Volume = 1;
							 | 
						||
| 
								 | 
							
										mediaPlayer->Play();
							 | 
						||
| 
								 | 
							
										// mediaPlayer->
							 | 
						||
| 
								 | 
							
									});
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 |