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 |