TTS

From GiderosMobile
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Supported platforms: Platform android.pngPlatform ios.png
Available since: Gideros 2018.1

Description

Enables text to speech on your mobile.

require "tts"

Example

require "tts"

local platform = application:getDeviceInfo()

--local tts=TTS.new()
local tts = TTS.new("fr", 1, 1)
local count = 1
local text = "This is a fairly long sentence that will test the new TTS engine for Android devices."

tts:addEventListener(Event.TTS_ERROR, function(e)
	print("TTS Error:"..e.error)
end)

local function stopSpeech()
	tts:stop()

	local function resumeSpeech()
		tts:speak("It was stopped and has been resumed")
	end

	local timerB=Timer.new(500, 1)
	timerB:addEventListener(Event.TIMER, resumeSpeech)
	timerB:start()
end

-- stop tts and then resume it
local timer=Timer.new(9000, 1)
timer:addEventListener(Event.TIMER, stopSpeech)

tts:addEventListener(Event.TTS_INIT_COMPLETE, function()
	print("TTS Initialised")
	local sentence = "Test "..count..text
	tts:setVolume(1)
	tts:speak(sentence, tostring(count))
	timer:start()
	--count = count + 1
end)

tts:setVolume(1)

tts:addEventListener(Event.TTS_UTTERANCE_COMPLETE, function(e)
	print("Utterance:"..e.utteranceId.." state:"..e.state.. " Count: "..count)

	if e.state == "start" then
		print("started")
	elseif e.state == "done" then
		count += 1
		local sentence = "test "..count .. text
		if count == 2 then
			tts:setLanguage("en-US")
			tts:speak(sentence.." in British English", tostring(count))
		elseif count == 3 then
			tts:setSpeed(0.4)
			tts:setPitch(2)
			tts:speak("The pitch and speed have been changed", tostring(count))
		elseif count == 4 and platform == "iOS" then
			tts:setSpeed(1)
			tts:setPitch(1)
			tts:setVolume(0.2)
			print("volume: "..tts:getVolume())
			tts:speak("This is quiet", "3")
			tts:setVolume(1)
		elseif count == 4 then -- not iOS
			count += 1
			tts:shutdown()
		elseif count == 5 and platform == "iOS" then
			tts:setVoice("com.apple.ttsbundle.siri_female_en-GB_premium")
			tts:speak("A new voice has been selected by the identifier, but it needs to be installed on the device.", tostring(count))
			print("pitch: "..tts:getPitch()..", speed: "..tts:getSpeed())
			local voices = tts:getVoicesInstalled()
			for i = 1, #voices do
				print(voices[i]["language"]..", "..voices[i]["identifier"]..", "..voices[i]["quality"]..", "..voices[i]["name"])
			end
		elseif count > 5 then
			tts:shutdown()
		end
	end
end)

Methods

Events

Constants