TTS

From GiderosMobile
Revision as of 15:31, 13 July 2023 by Hgy29 (talk | contribs) (Text replacement - "<source" to "<syntaxhighlight")

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

Description

Enables text to speech on your mobile. <syntaxhighlight lang="lua"> require "tts" </source>

Example

<syntaxhighlight lang="lua"> 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) </source>

Methods

Events

Constants