2012/01/11(水)SofTail 0.9.7.4
- SofTalk.exe を起動できなかったので対処
- /W オプション無しだとうまくいかないっぽい
- "コマンドをファイル名として~" あたりの設定の初期値が変わったのかな?
- 派生アプリを作りたいので使いまわせるようにコードを色々整理
- 文字コードを色々指定できるように
- SofTalk.exe を呼び出すと大量にログが流れた時に渋滞を起こす
- SofTalkw.exe を呼び出すと重なって再生されるので渋滞どころか無法地帯と化す
- 無法地帯を治めるには...SofTailを親プロセスにして、プロセスツリーごと殺せた方がいいのかも
- 俺が何か間違えた可能性があるけど、複数行を渡した時の動作がLIFOっぽい
- FIFOじゃないの...
いつからか、/X: オプションが追加されてバッチ起動をしやすくなっていたのはありがたい。
構想してる派生アプリは棒読みちゃんのプラグイン。
単体アプリとして作るのは用途の割には大仰な気がしてたので、プラグインにした方がいい。出だしが SofTalk との連携で始まったので単体として作ったけど、棒読みちゃんならサードパーティプラグインを作れる。
2012/01/04(水)SofTail 0.9.7.3
SofTail
「ファイルを排他ロックで開くアプリケーションと連携できる事」が目的だったはずのリリースです。FreeBSDのtailは開きっぱなしで読んでるようだったのでそのまま真似していたんですが、それではよろしくないケースがあるってことですね。
今回の目玉は落書きをつけた事です。
Win32API + rc ファイルで書いていた時代と違って、.Net では exe 一個で済ませるにはちょこっと工夫が要るみたいですね。
設定の保存については、VisualStudioにお任せするのがいいのか自分でゴリゴリ書いたほうが楽なのか、VisualStudio任せだと制限があって悩む所。
2011/12/30(金)SofTail-0.9.7.1
SofTail
棒読みちゃんと連携が取れなくなっていたように思うのですが、それは随分昔の出来事なので本当にそうだったのか、何かの勘違いだったのか今ではわかりません。手元のレポジトリを確認してみたらそのまま動きました。以前修正したような気がするししていないような気がします。
ひとまず、棒読みちゃんの最新版 0.10.1.0 に含まれるファイルで更新しました。
その他細かい修正を入れています。
2009/10/26(月)SofTail
SofTail
SofTailNet-1.0.1.2.zip (2015/06/06)SofTailNet-1.0.1.3.zip (2016/04/20)
MD5 (SofTailNet-1.0.1.2.zip) = 2f9e7f77ac0654dbe50cea8bc2be6367
MD5 (SofTailNet-1.0.1.3.zip) = 547fb48110a151d961ce0d8c76103b4b
棒読みちゃん用プラグイン
これは何?
ファイルの更新を見張って、追記された部分を SofTalk(通称ゆっくりさん) や棒読みちゃんに渡して再生するプログラムです。主に、UOSA クライアントのチャットログを音声再生するために作りました。
単にしゃべる tail としてもお使いいただけます。
UNIX には tail というファイルの末尾を表示するプログラムがあり、-f というオプションをつけるとファイルの追記分を継続して出力し続けるという機能があります。SofTail はこの出力を SofTalk に渡すような動作をします。よって、SofTalk + tail = SofTail としました。
使い方
SofTalk は付属していません。SofTalk からダウンロードしておいてください。SofTalkに複数の行を読ませた際に、読み上げる順序が入れ替わってしまうバグがあります。棒読みちゃんは 棒読みちゃんから。
.Net Framework 3.5 以上が必要です。Microsoft Update などで最新版をインストールして置いてください。
棒読みちゃんを使う場合は、再生開始前に棒読みちゃんを起動しておいてください。
起動すると以下のウィンドウが表示されます。
操作方法
ファイル読み上げさせるテキストファイルを指定します。「参照」ボタンで開きます。
文字コード
入力ファイルの文字コードを指定します。UOSA のチャットログは utf-16 です。
リストにない文字コードでも、Encoding クラス に記載されている文字コードを直接入力して指定することも可能です。
SofTalk
SofTalk を使う場合は SofTalk.exe の場所を指定します。こちらも「参照」ボタンが使えます。
音声合成ソフトウェア
どちらを使うか指定します。棒読みちゃんを使う場合はパスを指定する必要はありません。
※ 棒読みちゃんとSofTailを別々に起動するのが面倒、という要望には別の形でお応えする予定です。
UOSA chat.log の日付を省略する
UOSA の chat.log の行頭についている、[09/10/03][10:10:10] みたいな日付を省略して音声合成ソフトウェアに渡します。
Play
このボタンを押すと再生を開始します。指定されたテキストファイルが更新されると 音声合成ソフトウェアが内容を読み上げます。
Stop
再生を停止します。
Stop ボタンで再生を止めた後に再度 Play ボタンを押しても、停止中の内容は再生されません。
SofTail を終了しても SofTalk は終了しません。
動作環境
推奨環境は .Net Framework 3.5 SP1 が動作する環境 == Windows XP 以上です。動作確認した環境は Window7 64bit, Windows XP SP3 + .NetFramework3.5SP1です。
.NetFramework2.0 及び、Windows XP 以前の環境での動作は未確認です。
よくありそうな質問
Q. 棒読みちゃんだけでは足りないの?A. 棒読みちゃんに付属しているプラグインを見ると、内部では同じような事をしていそうですがユーザー指定のファイルを対象にしたプラグインはありませんね。そんなプラグインが追加されたらとっとと身を引きます。
Q. SofTalk が文章を読もうとする度に Windows セキュリティの警告が出ます。
A. SofTalk.exe のファイルのプロパティで ブロックを解除する を実行してみてください。
Q. 突然すごい勢いで喋り始めました
A. ファイルの末尾に追記されたのではなく、ファイルが"変更"された場合には頭から全部読むかもしれません。SofTail と音声合成ソフトを停止する他に道はありません。
Q. 再生中にグレイアウトしていない項目は変更できるってことですか?
A. 知りません。
Q. MacOSX で tail -f text.txt | saykana -f - を実行するのと何が違うんですか?
A. UNIX文化っていいですよね。
Q. このツールを使うことで EA に怒られませんか
A. SofTail は UO の情報を云々したり、ましてや UO に対してどうこうするものではないので安心してください。ていうか、単にテキストファイルをリアルタイムに読むだけのツールです。
Q. UOSA のチャットログはどこですか?
A. インストールディレクトリの logs\chat.log に置かれます。標準では C:\Program Files\Electronic Arts\Ultima Online Stygian Abyss\logs\chat.log です。
Q. UO2D クライアントのログは読み上げられませんか
A. 試していませんが、utf-16 として読めるかもしれないし、不正な utf-16 なので読めないかもしれません。
Q. UO2D クライアントのログをリアルタイムで読めませんか
A. 2D クライアントのジャーナルログ保存機能はリアルタイムではなく、かつ正しいテキストファイルではないので基本的には無理です。
2D クライアントのジャーナルをリアルタイムで読めるツールはあるので技術的には実現可能ですが、そういったツールの使用はグレーを通り越して完全に黒なので私は作りません。
既知の問題点
重大な問題があります。各機能の詳細な動作確認をしていない、という主に作っている人に起因する問題があります。おかしな動作があったらずばり言ってください。- Start, Stop を連打すると落ちることがある
- SofTalk と連携できるのか、0.9.7.2以降全然確認していない
- Harley Davidson に SofTail っていう車種があるらしい
SofTalk やログファイルのパスは記憶させたい一応実装- メッセージを指定して読み飛ばす機能があるといい
変更履歴
2016.04.20 ver1.0.1.3- Stopしてから再度Startしようとするとクラッシュする問題に対処
- ファイル名に、書式指定文字列を使用できるようになりました
- 文字コードの指定を、リストにないものも直接入力で指定できるように変更
- 一旦指定した文字コードは記憶されて、次回からはリストに表示されます
- [fix] SofTalk との連携が出来なくなっていた問題を修正
- [fix] 存在しないファイルを読む設定にした場合に、Stop ボタンを押しても動作が止まらない問題を修正
- 内部の処理を色々変更
- テキストファイルを吐き出すソフトウェアがファイルを排他ロックで開いている場合に、なるべく邪魔せず邪魔されず動くように変更
- ファイルを読むたびに開いては閉じ、権限エラーがあれば再試行したりするようにしました
- テストはしていますが、エラー処理が漏れていたらすみません
- 設定を記憶するようになりました
- Vista,7では %USERPROFILE%\appData\Local\SofTail に、XPでは %USERPROFILE%\Local Settings\Application Data\SofTail に保存されます
- アイコンを付けました/Aboutダイアログを変えました
- 落書きたのしー
- ビルドターゲットを .NetFramework3.5 から .NetFramework3.5ClientProfile に変更しました
- 対応環境が広がったという事になりますが、実質的には何も変わらないと思います
- .NetFramework2.0 での動作確認をやめました
- SofTalk.exe のパスを指定するための[参照]ボタンが有効にならないバグの修正
- 棒読みちゃんのバージョンアップに伴い、ライブラリを入れ替え
- 棒読みちゃん 0.1.10.0 に付属のBouyomiChanClient.csを使用しています
- 指定したテキストファイルが存在しない場合に不正終了する問題を修正
- 存在しない場合はエラーになるのではなく、ファイルが生成されるまで待つ
- 読み上げソフトに棒読みちゃんを選択した場合に、SofTalkのパスを指定する「参照」ボタンを無効化する
- デフォルトの値を、自分用のUOSA向けパラメータから変更して一般的と思われる値に変更
- 内部の処理をちょっと変更
- .NetFramework 2.0 で動かなくなっていたらごめんなさい
- 棒読みちゃんをライブラリ経由で使用するようになった
- 再生したままプログラムを閉じようとしたときに正常終了できない場合の処理をちゃんとした。
- 棒読みちゃんを利用できるようになった
- 修正: 再生したままプログラムを閉じようとすると正常終了できない場合があったのを修正
- C# + .Net Framework で作成して公開
- C++ Win32 API 版があった