音声出力新機能「Illustrator VOICE」を実装してみる #IllustratorVOICE #Aiさずにはイラレない

Development,Illustrator

エイプリルフール

はじめに Adobe のエイプリルフール企画はこちら。

Illustrator VOICE とは?

1987年にリリースされたAdobe Illustratorの30周年を記念し、音声出力機能「Illustrator VOICE(イラストレーター ボイス)」が本日世界に先駆けて、日本独自に発表されました。次期バージョンに搭載される予定の Illustrator VOICEは、デスクトップアプリのIllustratorが現在使用しているツールや作業内容を音声で読み上げ、制作者をアシストしてくれる画期的な新機能です。

Adobe Illustrator CCに音声出力新機能「Illustrator VOICE」を発表 “しゃべるIllustrator” のベータ版公開 #IllustratorVOICE #Aiさずにはイラレない | Adobe Creative Station

プラグインで実装!

暮井 慧

これって Illustrator プラグインで実装できるんじゃ……? というわけでさっそく試してみたよ。

プラグインを開発するには

まずは Adobe Illustrator SDKs の入手!

PDF Adobe Illustrator CC 2017 Programmer’s Guide によると…。

  • プラグインの機能は、Action・Effects・File format・Filter・Menu command・Notifier・Plugin group・Suite・Timer・Tool・Transform again に分類されるみたい。
    • → Notifier の機能を持つプラグインとして作ると良さそう
  • プラグインから Illustrator アプリへアクセスするには、Suite と呼ぶ Illustrator API を使って行うみたい。

きちんと作るには Windows/Mac 両対応が必要だけど、ほとんど同じソースコードで対応できるみたい。ただし、今回はとりあえず Windows の Illustrator プラグインとして作るよ。

サンプルプラグイン

SDK はいろいろなサンプルプラグインのソースコードがあるから、まずそれを使って、ビルドできるか環境の確認。作りたいプラグインと同じ種類のサンプルを改造して試す、というのが良さそう。

Notifier 機能は、Annotator プラグインなどに使われているよ。詳しくは PDF Getting Started with Adobe Illustrator CC 2017 Development を読もう!

プロジェクトテンプレート

SDK にはプロジェクトテンプレートも付属していて、新規にプラグインプロジェクトを作る場合はこれを活用できるよ。でも、テンプレートのサンプルコードより、サンプルプラグインのコードの方が try-catch とかきちんと書いてある印象だから見比べて開発するのがいいかも。

サンプルプラグインのコードは Visual Studio 2017 で動作したけど、SDK 付属の VC++ のプロジェクトテンプレートをインストールしようとすると 2017 だとなぜか失敗。

Visual Studio 2015 でテンプレートを使う場合もファイルの修正が必要で、.vsz ファイルの冒頭を次のように書き換えてインストール。


VSWIZARD 7.0
Wizard=VsWizard.VsWizardEngine.14.0
Param="WIZARD_NAME = IllustratorSDKProject"
Param="RELATIVE_PATH = VCWizards\AppWiz\IllustratorSDK"
Param="WIZARD_UI = FALSE"

テンプレートとインストール手順は Adobe Illustrator CC 2017 SDK\samplecode\Templates フォルダーをチェック!

Illustrator から通知を受け取る

さらに、SDK 付属の API リファレンスを調べてるみると、Plug-in Notifiers の種類はいろいろあって、新規ドキュメント作成の通知をプラグインを受け取るには AINotifierSuite に kAIDocumentNewNotifier type を登録すればいいみたい。通知の登録部分と通知を受け取る部分はこんな感じ。


ASErr VoicePlugin::AddNotifier(SPInterfaceMessage *message)
{
ASErr result = kNoErr;
result = sAINotifier->AddNotifier(fPluginRef, "VoicePlugin", kAIDocumentNewNotifier, &fDocumentNewNotifier);
aisdk::check_ai_error(result);
return result;
}

view raw

VoicePlugin.cpp

hosted with ❤ by GitHub


ASErr VoicePlugin::Notify(AINotifierMessage* message)
{
ASErr error = kNoErr;
if (message->notifier == fDocumentNewNotifier)
// 音声再生
return error;
}

view raw

VoicePlugin.cpp

hosted with ❤ by GitHub

完成?

……とあれこれして、とりあえず新規ドキュメント作成時に音声を再生するのは完成!

わからなかったこと

Illustrator VOICE の音声を再生するタイミングに対応する Notifier がすべてあるかは不明。あと通知を受けるとき、AINotifierMessage 構造体の notifyData に通知に関連するデータが入っていると思うのだけど、その仕様がリファレンスになくて不明。これを使えば、例えばレイヤーオプションの変更通知から、ユーザーがどのレイヤーを操作したのかわかったりしそうな気がするんだけど……。

Illustrator VOICE に必要な Notifier や関連仕様がわかる Adobe 社員やプラグイン開発者の人は教えてね。

ダウンロード

プラグインのダウンロードは、Releases · kureikei/voice-plugin-for-illustrator から。ソースコードも公開しているよ。

制限はこちら。

  • Illustrator CC 2017 Windows 版・64bit 版のみ対応
  • 新規ドキュメント作成時の音声再生のみ対応

使い方はこちら。

  • 再生する MP3 ファイルのパスを、環境変数 AI_VOICE_PLUGIN_START として登録

  • プラグインファイルのインストールは、C:\Program Files\Adobe\Adobe Illustrator CC 2017\Plug-ins\ にコピー、または、Illustrator 「編集」メニューの「環境設定」-「プラグイン・仮想記憶ディスク」にある追加プラグインフォルダーをチェックして、プラグインファイルのある場所を指定

システムボイス

オマケに、Illustrator VOICE とかに使えたりするかもしれないボイス集はこちらから!

ボイス – プログラミング生放送

The following two tabs change content below.
都内の公立高校に通う高校生。部活は、情報処理研究会。身体を動かすのも好きで、気が向いたときはなぜか体育会系の部活に混ぜてもらっていろんなスポーツをすることも。プログラミング生放送のキャラクターとして活動中!

Development,Illustrator

Posted by kei