challenge 音声合成でHello, world!

与えられた文字列を音声合成して再生する関数を作ってください。

使用したライブラリはタグでつけてください。またOSに依存する場合もタグでつけてください。日本語文字列も発音できることが好ましいですが、必須ではありません。

以下はサンプルです。

>>> say("Hello, world!")
>>> say("con nitch were") # 「こんにちは」
>>> say("daw cat coo org, sole what program mar know tum yen know Colosseum death")

Posted feedbacks - StandardML

eSpeakのライブラリをSML#のFFI機能を使って呼んでいます。
ライブラリの場所は/usr/libに決め打ち。さらに設定はすべて固定。
 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!"

Index

Feed

Other

Link

Pathtraq

loading...