喫茶XRAYトップページ

[スレッド全体
]

[2317] #2240でお話したキャラクターでナレーションの音声合成について返信 削除
2009/4/26 (日) 19:34:29 KSCHomePage
KSCです。

#2240でお話したキャラクターでナレーションの音声合成についてですが、

少し前に「窓の杜」のニュースメールで知ったのですが、
「T2V Player」と言うフリーウェアがあり、テキストで書いた台本を
任意のキャラクターにしゃべらせ自分なりの番組作成ができる言うものです。

試しに自分のサイトニュースを作成してみました。
暇つぶしに見に来て下さい。

http://kazuyoshisc.sakura.ne.jp/joomla/index.php?option=com_content&view=article&id=35:2009-04-26-10-14-54&catid=1:2009-02-15-08-00-35&Itemid=12

ちなみに「T2V Player」は、台本テキストをTVML言語に変換・映像化
しているのですが、そのTVML言語はNHK放送技術研究所が提唱している
言語なのです。

「NHK」って、こんな事もしているんですね。
ちょっとイメージが変わりました。

こういう事をもっと世間にアピールすれば良いのにと思うのですが...。

「もう、既に知っているよ!」だったら、すいません。聞き流して下さい。

それでは、また。

[2319] 音声合成を使用して動画マニュアル返信 削除
2009/4/26 (日) 20:43:29 Mr.XRAY
感動です!!
やはり実際にできたものを観ると感動します.
それともう1つ,自分のサーバではなく,Youtubeの利用です.
時代の進化を感じさせます.

> 「NHK」って、こんな事もしているんですね。
> ちょっとイメージが変わりました。


通称NHK技研と言うのですが,何でも研究していますね.
私がまだ「研究者のはしくれ」だった頃,放射線画像の研究をしている方
がいました.
また,アニメーション動画作成の研究をしている方も.
その頃は,まだ骨だけ(線画の人物)が動くだけでしたが.


[2321] Re:音声合成を使用して動画マニュアル返信 削除
2009/4/26 (日) 21:09:24 KSCHomePage
KSCです。

> 感動です!!
> やはり実際にできたものを観ると感動します.


早速、見て頂けて光栄です!

> それともう1つ,自分のサーバではなく,Youtubeの利用です.
> 時代の進化を感じさせます.


YouTubeを利用している理由としては、
・動画ファイル管理が容易である事。
・自サイトの容量節約。
・色々な人に自分が作成した動画を見て欲しいから。

> 通称NHK技研と言うのですが,何でも研究していますね.
> 私がまだ「研究者のはしくれ」だった頃,放射線画像の研究をしている方
> がいました.


やはり知ってみてたのですね。さ・す・が...!

> また,アニメーション動画作成の研究をしている方も.
> その頃は,まだ骨だけ(線画の人物)が動くだけでしたが.


TVML言語も確立(?)されたようで、その言語を使って様々なツールが
登場してくるのでしょうかね?

そういえば、「MPF」と言うシステムにも非常に興味が沸いている私でした!

[2324] Re2:音声合成を使用して動画マニュアル返信 削除
2009/4/28 (火) 05:11:06 Mr.XRAY
> そういえば、「MPF」と言うシステムにも非常に興味が沸いている私でした!

何でも興味を持つのは進歩の証ですよね.
ところで,MPFって,ファイルのやつですか?


[2329] Re3:音声合成を使用して動画マニュアル返信 削除
2009/4/28 (火) 17:05:11 TS
▼ Mr.XRAYさん

「TVMLプレーヤー」の外部制御開発キット

Delphiで制御出来るのを確認しました。

スタートの確認のみです。


[2332] Re4:音声合成を使用して動画マニュアル返信 削除
2009/4/28 (火) 19:37:00 KSCHomePage
KSCです。

> 「TVMLプレーヤー」の外部制御開発キット
>
> Delphiで制御出来るのを確認しました。
>
> スタートの確認のみです。


Mr.XRAYさんと同意見です。

早っ.! と言うか、知りませんでした。
私も確認したいと思います。

TSさん、情報有難うございます。


[2334] Re5:音声合成を使用して動画マニュアル返信 削除
2009/4/28 (火) 20:05:00 TS
//以下てすとコード
Memo1は使っていません。
ボタンのみでテストしてます。

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    Memo1: TMemo;
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses tvif;

procedure wait_command(wait_val:integer);
begin
  while tvifGetStatus() <> wait_val do
    begin
    end;
end;


(*
static void help(void)
{
        printf("ボブクロック\n2つの割り込みを使用したサンプルプログラムです。\nこのプログラムはオートリジュームオフで動作しています。\n");
}
*)

function FileSizeEx(const FileName: String): Integer;
var
  R: TSearchRec;
begin
  if FindFirst(FileName, faAnyFile, R) = 0 then Result := R.Size
  else Result := -1;
  FindClose(R);
end;


function read_script(filename:string;var script:Pchar):boolean;
var FS:TFileStream;
    ByteA:TByteArray;
    PByteA:^TByteArray;
begin
  result:=False;
  if FileExists(filename) then
    begin
      FS:=TFileStream.Create(filename,fmOpenRead);
      FS.Read(ByteA,FileSizeEx(filename));
      script:=@ByteA;
      result:=True;
      FS.Free;
    end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var script:Pchar;
begin
        tvifInit(0,TVIF_DEFAULT_SCRIPT_LINE,TVP_ON);
        // オートリジュームをオンに設定
        tvifAutoResumScript(TVP_OFF);

        // CGモデルを常駐させる。
        tvifModelStationed(TVP_ON);
        tvifSetWindowPosition(0,0);
        // スクリプトが停止したときの状態の指定
        // tvifSetStopTypeで指定される状態に切り替えない場合は下記のように指定する。
        // ディフォルトはTVP_ON。
        tvifSetStopMode(TVP_OFF);

        // プレイヤーの起動
        if (tvifSetCommand(TVP_EXECUTE) = TVP_OK) then
                wait_command(TVP_STOP); // showmessage('test'); //
  //if read_script('bobclock.tvml',script) then
  if read_script('kaiwa.tvml',script) then
    begin
                  tvifSetScript(script);
                  // メインスクリプトの更新
                   tvifSetCommand(TVP_UPDATE_SCRIPT);
                   // プレイヤーの更新を待つ
                  wait_command(TVP_UPDATE_SCRIPT);
      // 再生
                        if tvifSetCommand(TVP_PLAY) = TVP_OK then
        wait_command(TVP_PLAY);
    end;
        // スクリプト再生が停止したら(ここでは、割り込み&メインスクリプト共に監視する。)
  repeat
        until tvifGetStatus = TVP_STOP;


  tvifSetCommand(TVP_SHUTDOWN);
        tvifExit();
end;

end.

[2335] Re6:音声合成を使用して動画マニュアル返信 削除
2009/4/28 (火) 21:33:30 TS
■ DLL_API void tvifGetMousePos(int *pos);
player2でウィンドウ内でマウスボタンがクリックされた位置を引数posにint[2]型ポイ
ンタで返す。取得される値は、
pos[TVP_X] X 座標
pos[TVP_Y] Y 座標
である。

と説明にあるので下記の様に修正したのですが

     PTVP=^TVP ;
     TVP=record
        TVP_X:integer; // X 座標
        TVP_Y:integer; // Y 座標
     end;

procedure tvifGetMousePos(var pos: PTVP); cdecl; external TvifExport;

  repeat
    //この下は上手く行くマウスの動作が拾えます。
    if tvifGetMouseButton=TVIF_MOUSE_MIDDLE then
     begin
       beep;
       tvifResetMouseButton;
     end;
    //ここが上手くないフリーズします。
    tvifGetMousePos(TVPos);
    Form1.Label1.Caption:=IntToStr(TVPos^.TVP_X);
    Form1.Label2.Caption:=IntToStr(TVPos^.TVP_Y);
 until tvifGetStatus = TVP_STOP;

これが出来ると画面の一部分を指定して
画面の動作を止めるなりして、止めなくてもいい
ですけど、次の画面をその選択したものに
変えるなどという事が出来ます。

クイズ番組も出来るでしょう

各説明に移動とかも出来るでしょう。

考えたら切りが無いですが。



[▼次のスレッド]
INCM/CMT
Cyclamen v3.82