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 - Other

uwscのマニュアルには「要SAPI 5.x」とあります。
コントロールパネルに「音声認識」があれば使えるようです。
1
2
3
SPEAK("Hello, world!")
SPEAK("こんにちは")
SPEAK("どう書くorg、それはプログラマの為のコロシアムです。")

LLVMアセンブリ(32bit)で。Mac OS Xのsayコマンドにコマンドライン引数を渡してます。いいのかこんなんで…

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
; Usage: ./say message

declare i32 @strlen(i8*)
declare i32 @sprintf(i8*, i8*, ...)
declare i32 @system(i8*)

@cmd = internal constant [9 x i8] c"say \22%s\22\00"

define i32 @main(i32 %argc, i8** %argv) {
    %cmdp = getelementptr [9 x i8]* @cmd, i32 0, i32 0
    %argv_addr = ptrtoint i8** %argv to i32
    %msg_addr = add i32 %argv_addr, 4
    %msgp = inttoptr i32 %msg_addr to i8**
    %msg = load i8** %msgp
    %slen = call i32 @strlen(i8* %msg)
    %len = add i32 %slen, 9
    %s = malloc i8, i32 %len
    call i32 (i8*, i8*, ...)* @sprintf(i8* %s, i8* %cmdp, i8* %msg)
    call i32 @system(i8* %s)
    ret i32 0
}

Index

Feed

Other

Link

Pathtraq

loading...