音声合成でHello, world!
Posted feedbacks - StandardML
eSpeakのライブラリをSML#のFFI機能を使って呼んでいます。 ライブラリの場所は/usr/libに決め打ち。さらに設定はすべて固定。
see: eSpeak: Speech Synthesizer
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 | fun say text =
let
open DynamicLink
val lib = dlopen "/usr/lib/libespeak.so"
val init = dlsym (lib, "espeak_Initialize")
val synth = dlsym (lib, "espeak_Synth")
val sync = dlsym (lib, "espeak_Synchronize")
val espeakSyncronize = sync : _import () -> int
fun espeakInitialize () =
_ffiapply init (0 : int,
0 : int,
NULL : string ptr,
0 : int) : int
fun espeakSynth () =
_ffiapply synth (text : string,
size text + 1 : int,
0 : int,
1 : int,
0 : int,
0 : int,
NULL : word ptr,
NULL : char ptr) : int
in
espeakInitialize ();
espeakSynth ();
espeakSyncronize ()
end;
say "Hello, world!"
|


にしお
#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 ]