音声合成でHello, world!
Posted feedbacks - Scala
FreeTTSを使って実装してみました。
see: 音声認識/合成のためのAPI - Java Speech APIとJSR 113
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | import java.beans.PropertyVetoException;
import java.util.Locale
import javax.speech.AudioException
import javax.speech.Central
import javax.speech.EngineException
import javax.speech.EngineStateError
import javax.speech.synthesis.Synthesizer
import javax.speech.synthesis.SynthesizerModeDesc
import javax.speech.synthesis.Voice
class HelloWorld {
private var s:Synthesizer = null
val d:SynthesizerModeDesc = new SynthesizerModeDesc(null, "general", Locale.US, null, null)
var v:Voice = null
s = Central.createSynthesizer(d)
if (s == null) {
Console.println("cannot create synthesizer.")
System.exit(1)
}
v = new Voice("kevin16", Voice.GENDER_DONT_CARE, Voice.AGE_DONT_CARE, null)
if (v == null) {
Console.println("cannot create voice.")
System.exit(1)
}
s.allocate
s.resume
s.getSynthesizerProperties().setVoice(v)
def sayHello(m:String):Unit = {
s.speakPlainText(m,null)
s.waitEngineState(Synthesizer.QUEUE_EMPTY)
}
def deallocateSynthesizer:Unit = s.deallocate
}
object HelloWorldMain {
def main(args:Array[String]):Unit = {
try {
val h:HelloWorld = new HelloWorld
args.size match {
case 0 => h.sayHello("Hello World")
case _ => h.sayHello(args(0))
}
h.deallocateSynthesizer
} catch {
case e:Exception => {
e.printStackTrace
System.exit(1)
}
}
}
}
|

にしお
#3415()
Rating4/4=1.00
使用したライブラリはタグでつけてください。またOSに依存する場合もタグでつけてください。日本語文字列も発音できることが好ましいですが、必須ではありません。
以下はサンプルです。
>>> say("Hello, world!") >>> say("con nitch were") # 「こんにちは」 >>> say("daw cat coo org, sole what program mar know tum yen know Colosseum death")[ reply ]