Hatena::ブログ(Diary)

サイト更新停滞ちうっ このページをアンテナに追加 RSSフィード

2017-01-16

[][] Mac Sierraでも動作するAquesTalkの音声再生アプリMYukkuriVoiceを作った 20:56  Mac Sierraでも動作するAquesTalkの音声再生アプリMYukkuriVoiceを作ったを含むブックマーク  Mac Sierraでも動作するAquesTalkの音声再生アプリMYukkuriVoiceを作ったのブックマークコメント

アプリ説明は動画の中で説明しているので、この記事では、このアプリを作った時に得られた

(役に立たない部分が多そうな)知見について話そうと思う。

https://github.com/taku-o/myukkurivoice

D

Macのゆっくり事情

いわゆるゆっくりの声はAquesTalkというライブラリで作るのだけど、この声を出すアプリは、

などがある。


Mac環境唯一のアプリゆっくろいどMac Sierraで動作しなくなったのが、

今回のアプリの作成の経緯ですね。


AquesTalk

この系統のアプリの仕組み

AquesTalk(http://www.a-quest.com)のライブラリには、

があり、

この2つの機能を利用して声を再生および保存するのが、この手のアプリの基本的な仕組みです。

日本語のメッセージ
  ↓
  ↓ AqKanji2Koe
  ↓
音声記号列
  ↓
  ↓ AquesTalkWAVバイナリ

AquesTalkライセンス

AquesTalkライブラリには

がある。

これらのライセンスは AQUEST Online Store(http://shop.a-quest.com/?mode=cate&cbid=1377248&csid=0)で購入する。


よって、商売などで作成したアプリを配布するには頒布ライセンスが必要なのだが、

広く公開するアプリ個人利用における無償配布規定に従える場合は、

個人利用ライセンスを利用できる(審査あり)。


Node.js + Native

ということで、

アプリの機能を実現するには、Node.jsからダイナミックライブラリを呼び出す方法が必要になった。


Node.jsからNativeの機能を呼び出す方法は、調べると、

などがあった。


3番目のSWIGは色々な言語からの呼び出しに対応していて、一見凄そうだが、

冷静に考えると使う側からすると、必要な言語から呼び出せれば、それで良いかな、という気がしないでもない。


一番下のemscriptenはよく調べていないけれど、

Node ffiSWIGは、最終的にはNode.jsネイティブ拡張と同じことをしているっぽい?

(深く追いませんけど)


今回はNode ffiを利用しましたが、結構安定している印象。

Node ffiの使い方の例は、大体このような感じ

var ffi = require('ffi');
var ref = require('ref');

var ptr_uchar = ref.refType(ref.types.uchar);
var ptr_int   = ref.refType(ref.types.int);
var ptr_void  = ref.refType(ref.types.void);

// unsigned char * AquesTalk2_Synthe_Utf8(const char *koe, int iSpeed, int * size, void *phontDat)
var framework_path = 'AquesTalk2.framework/Versions/A/AquesTalk2';
var ptr_AquesTalk2_Synthe_Utf8 = ffi.DynamicLibrary(framework_path).get('AquesTalk2_Synthe_Utf8');
var fn_AquesTalk2_Synthe_Utf8  = ffi.ForeignFunction(ptr_AquesTalk2_Synthe_Utf8, ptr_uchar, [ 'string', 'int', ptr_int, ptr_void ]);

var alloc_int = ref.alloc('int');
var encoded = '';
var speed = 100;
var phont_data = ....;
var r = fn_AquesTalk2_Synthe_Utf8(encoded, speed, alloc_int, phont_data);
var buf_wav = ref.reinterpret(r, alloc_int.deref(), 0);

動画

動画作成者向けのアプリなので、その層の人に情報を伝えるには、動画を作る必要がある。たぶん。

ボイスロイド

この動画はボイスロイドを解説者として採用している。

(おっさんの声より良いという判断。だが、実際、ミス無く喋るのは難しい、ので手間はあまり変わらないのだ)


ボイスロイドの会話は、ゆっくり系の声より会話の速度が速い。同じ会話を話させても短い時間で終わる。

ゆっくりに同じ早さで話させると、早口に聞こえがちなようだ。


解説者として使いやすいボイスロイドは、自分の主観では、

結月ゆかりの方が使いやすい。

たまに苦手な台詞、言い回しがあり、その場合は、台詞を変えて回避すると良い。


逆に使いにくそうなのは、

調音が少し難しいのと、関西弁の発音にされちゃうのが理由。


会話のリズム

動画の会話の間をうまく制御できない人は、セリフの合間を作らずにひたすら喋らせまくれば、

センスが無い人でもそれなりに誤魔化せる、という動画作成者的ノウハウがあるらしい。

(1秒以上、会話していない時間を作らないようにする)


実際、このノウハウは効果的だと思う。


2人以上話す人が居ると、切れ間のない会話を作りやすい。


おわり

未知の作業が多かったので、いろいろ勉強になった

2013-12-08

vagrant + debian + plone 14:40  vagrant + debian + ploneを含むブックマーク  vagrant + debian + ploneのブックマークコメント

install vagrant

  • 省略

install Debian

cd /usr/local/src/vagrant
vagrant box add debsqueeze64 http://www.emken.biz/vagrant-boxes/debsqueeze64.box
vagrant box list
vagrant init

edit Vagrantfile

  • 運用スタイルに合わせて適当に
- config.vm.box = "base"
+ #config.vm.box = "base"
+ config.vm.box = "debsqueeze64"
- #config.vm.network :public_network
+ config.vm.network :public_network
  • 動作確認
# 起動/停止/ssh
vagrant up
vagrant halt
vagrant ssh

install plone

vagrant up
vagrant ssh
sudo apt-get update
sudo apt-get install python-setuptools python-dev build-essential libssl-dev libxml2-dev libxslt1-dev libbz2-dev libjpeg62-dev
sudo apt-get install libreadline-dev wv poppler-utils
sudo apt-get install git
wget --no-check-certificate https://launchpad.net/plone/3.3/3.3.6/+download/Plone-3.3.6-UnifiedInstaller.tgz

tar xf Plone-3.3.6-UnifiedInstaller.tgz
cd Plone-3.3.6-UnifiedInstaller.tgz
./install.sh standalone
  • 動作確認
cd ~/Plone/zinstance
# foreground/start/stop
bin/plonectl fg
bin/plonectl start
bin/plonectl stop
/sbin/ifconfig

追加の設定

  • sitecustomize.pyを入れる
vi /home/vagrant/Plone/Zope-2.10.13-final-py2.4/lib/python/sitecustomize.py
+ import sys
+ sys.setdefaultencoding("utf-8")
  • ploneのポートを適当に設定
vi /home/vagrant/Plone/zinstance/parts/instance/etc/zope.conf
+ <http-server>
+   address 12200
+ </http-server>
+ <ftp-server>
+   address 12221
+ </ftp-server>

2011-12-11

[] Emacs Lispテクニックバイブル 感想 00:29  Emacs Lispテクニックバイブル 感想を含むブックマーク  Emacs Lispテクニックバイブル 感想のブックマークコメント

Emacs Lisp テクニックバイブルを入手して読了。

読み終わるのに結構時間かかった。

http://www.amazon.co.jp/dp/4774148970


  • 一般的な言語の教科書っぽい感じ
  • 練習問題って項目だけど、かならず問題って訳ではなくて、操作の例とかの場合も
  • まとめがいい感じ

Emacs Lispをバリバリ書かない人には、間違いなく良い本。

書いている人にとっても、本の後半、テストデバッグ、モード作成、外部プログラムとの協調、非同期処理あたりは面白い感じ。

前作のEmacsテクニックバイブルと違って、即使える系の本じゃないけど、エディタマニアー↑な自分には面白かった。


Emacs本、あんまり頻繁に出る訳じゃないから、

たまに出る本ががっかりだと、残念感が半端無いから、良い本で本当によかった。

rubikitchrubikitch 2012/01/14 23:57 書評ありがとうございます!!
役立ったようで嬉しいです。

この本はオーソドックスな教科書スタイルと逆引き本を混ぜてみました。

2011-11-19

[] ujihisa.vim#2 15:48  ujihisa.vim#2を含むブックマーク  ujihisa.vim#2のブックマークコメント

  • 2011/11/19 13:00 - 20:00
  • mixi
  • #ujihisa

http://partake.in/events/b886679b-e8c0-44af-9df2-62a6e5cfd6ed

menu

  • Keynotes
    • "To be a good programmer" with ujihisa
    • "Illustrate Vim core source code, dissing" with KoRoN
    • "The truth of Vim by unprecedented point of view" with ShougoMatsu
  • Tech talks
    • "(untitled)" with Kana Natsuno
    • "Vim script getting started" with m-kanno
    • "Vim-pep8" jbking
    • "(something technological)" with ShougoMatsu
    • "LiveCoding: implementing quickrun hook" with thinca
    • "All about eskk.vim with vital.vim" with tyru
    • "Simplenoting with Vim" with sora_h
  • Lightening talks
    • "Start Vim script" with choplin
    • "My Unite plugins" with basyura

"Illustrate Vim core source code, dissing" with KoRoN

  • too many ifdef

ifdefは本当に多い!!

  • many static variables
  • big big switch

insert、normalなどの処理がswitchに集中。そこで全て処理。

"My Unite plugins" with basyura

  • unite-yarm
  • unite-rails
    • コントローラー、モデル、ビューの制御

"Vim script getting started" with m-kanno

  • :help <Plug>
  • :help use-cpo-save

"Vim-pep8" jbking

  • pep8

"LiveCoding: implementing quickrun hook" with thinca

"The truth of Vim by unprecedented point of view" with ShougoMatsu

  • いつもの

"世界に一つだけのエディタ" with ShougoMatsu

  • いつもの

"Simplenoting with Vim" with sora_h

"Start Vim script" with choplin

"To be a good programmer" with ujihisa

  • バンクーバーから、このために来た
  • 結婚

"(untitled)" with Kana Natsuno

  • いない

"All about eskk.vim with vital.vim" with tyru

  • いない

感想

  • いろいろなイベントと日付が重なりすぎて、さすがにもったいなかった気もする。
  • ところで、あんまり関係ないけど、家に帰ったら、Vimテクニックバイブル第2刷が家に届いていた!!!

2011-10-16

[] Yokohama.vim #2 00:43  Yokohama.vim #2を含むブックマーク  Yokohama.vim #2のブックマークコメント

座談形式Vim勉強会

2011/09/25 13:00 〜

http://atnd.org/events/19649

キーマッピングを考える by tsukkee

:help ,
submode.vim

https://github.com/kana/vim-submode

状況によってマッピングを変更したり

arpeggio.vim

https://github.com/kana/vim-arpeggio

同時押しをサポートしている。

実装がおもしろいよ

Shougoさん発表

いろいろ

Vimテクニックバイブルの中から良いと思うネタはどれ

ぼくがさいきょうとかんがえているちっぷすはとりあげられませんでした。

感想

Yokohama.vimは、参加者全員でつくる形の勉強会だから、

なかなかコントロール難しいよね、とか、思ったりしたのでした。

単純に発表オンリーなら、よりコントロールしやすくなるけど、それがYokohama.vimなのだ。

[perl] YAPC::Asia Tokyo 2011 00:47  [perl] YAPC::Asia Tokyo 2011を含むブックマーク  [perl] YAPC::Asia Tokyo 2011のブックマークコメント

YAPC::Asia Tokyo 2011

2011/10/15 大岡山キャンパス

http://yapcasia.org/2011/


スポンサー枠で遊びに行ってきました。

仕方ない話だけど、遅くにしかいけなくて、LTしか見られなかった。


ぼくのかんがえたさいきょうのてきすとえでぃた by kiwanami

Common Lispってどんな言語か

福岡のいいところ

ロケタッチアプリ

Perlnのモジュール

  • akefile

アケファイルって何

MakefilePerl -M → akefaile

  • Mモジュール

全部書きたい人用だから、何も機能がない

プログラムの静的解析で悪いモジュールを探す

  • 多くの人が関わる大きなモジュール
  • 多くのライブラリを使い、多くのライブラリから使われるモジュール
  • 計測して見つけ出す

ぼくのかんがえたさいきょうのえろさいとの舞台裏

Acme::MineChan

マインスイーパーを解決するプログラム

Managing A Band of Hackers

  • ハッカーの特徴
  • 一人では生きられない
  • 物事に飽きやすい
  • 興味を優先する
  • 朝遅い
  • 空気読めない
  • ほかにもマネージメントの進め方みたいな話。一番参考になったかも