Speech synthesis: Difference between revisions

Content added Content deleted
(Added zkl)
Line 242: Line 242:
{{libheader|FreeTTS|1.2}}
{{libheader|FreeTTS|1.2}}
<lang scala>import java.util.Locale
<lang scala>import java.util.Locale
import com.sun.speech.freetts._

import javax.speech.Central
import javax.speech.Central
import javax.speech.synthesis.{ Synthesizer, SynthesizerModeDesc }
import javax.speech.synthesis.{ Synthesizer, SynthesizerModeDesc }
Line 249: Line 251:
def speech(text: String) = {
def speech(text: String) = {
if (!text.trim.isEmpty()) {
if (!text.trim.isEmpty()) {
val VOICENAME = "kevin16"
synth.speakPlainText(text, null)
synth.waitEngineState(Synthesizer.QUEUE_EMPTY)
}
}


System.setProperty("freetts.voices", "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory")
val voiceName = "kevin16"
Central.registerEngineCentral("com.sun.speech.freetts.jsapi.FreeTTSEngineCentral")


val synth = Central.createSynthesizer(new SynthesizerModeDesc(Locale.US))
System.setProperty("freetts.voices",
synth.allocate()
"com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory")


val desc = synth.getEngineModeDesc() match {
Central.registerEngineCentral("com.sun.speech.freetts.jsapi.FreeTTSEngineCentral")
val synth = Central.createSynthesizer(new SynthesizerModeDesc(Locale.ENGLISH))
case g2: SynthesizerModeDesc => g2
}
synth.allocate()
val desc = synth.getEngineModeDesc() match {
synth.getSynthesizerProperties()
case g2: SynthesizerModeDesc => g2
.setVoice(desc.getVoices().find(_.toString() == VOICENAME).get)
case _ => throw new ClassCastException
synth.speak(text, null)

synth.waitEngineState(Synthesizer.QUEUE_EMPTY)
synth.deallocate()
}
}
}
synth.getSynthesizerProperties()
.setVoice(desc.getVoices().find(_.toString() == voiceName).get)


speech("If it ain't Dutch, It ain't much.")
speech("If it ain't Dutch, It ain't much.")
synth.deallocate()
}</lang>
}</lang>