Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

【朗報】無音無限ループは禁術じゃなかった!

703 views

Published on

LINE Developer Community : 第 4 回 ボット自慢/苦労自慢 LT 大会(2019/7/12)のLT資料です。
https://linedevelopercommunity.connpass.com/event/135814/

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

【朗報】無音無限ループは禁術じゃなかった!

  1. 1. 【朗報】無音無限ループは 禁術じゃなかった! 平林 拓将(ひらりん) himarin269 / himanago LINE Developer Community : 第 4 回 ボット自慢/苦労自慢 LT 大会 2019/7/12
  2. 2. 自己紹介 • Name • 平林 拓将(ひらりん) • Work • テクニカルトレーナー/アーキテクト • Like • C# と Azure と LINE! • Social • Twitter:@himarin269 • GitHub:himanago • Blog:http://himanago.hatenablog.com/
  3. 3. DEMO
  4. 4. テキスト腹話術 LINEからの入力でClovaに好きな言葉を しゃべらせることができる腹話術スキル!
  5. 5. できること • スキルとBotが連携し、LINEで入力した内容をそのまましゃべらせる 活用例 ≪はげましてもらう≫ ≪子どもと遊ぶ≫
  6. 6. できること • LINE上でセリフの事前登録が可能(テンプレート作成) リッチメニューから 作成開始 メッセージを送ると セリフがリストに 追加される クイックリプライで 作成終了
  7. 7. すごいところ どんなセリフでも 自由なタイミングで しゃべるよ! 対話が原則のClovaスキルの常識を覆す! その場で何でもしゃべってくれる! いつまでも続くスキルのセッション! → 話しかけなくてもClovaだけがしゃべりだす → 自由な言葉を言わせられる(英語・韓国語翻訳対応) → セッションが勝手に切れず長時間遊べる
  8. 8. アーキテクチャ CEK Messaging API Azure Functions Clova LINE Durable Functionsで コードだけでステートフルに連携! Cognitive Services (Translater Text API)
  9. 9. CEK裏技「無音無限ループ」 • CEKのAudioPlayerのイベントを利用して、スキルを起動したまま 無限にClovaを待機させるしくみが作れる "PlayFinished" 「無音」再生指示 無音mp3の再生指示を出すことで無限ループを作る (何らかの条件を満たした場合に無音再生以外の指示を出すことで無限ループから抜ける) 無限 ループ・・・ Durable Functionsと相性がいい!
  10. 10. 無音無限ループ+Durable Functionsでタイミング同期 Azure FunctionsClova LINE 無音無限ループで セッション維持しながら待機 Durable Functionsで イベント待機 LINEからの操作で Functions→Clovaに指示
  11. 11. そんなスキルですが…! 「テキスト腹話術」という名前でストア公開! Clova Skill Awards で入賞! https://clova.line.me/clova-ai/skillstore/skill/jp.himanago.ventriloquism
  12. 12. 実はアワード狙いで急遽公開へ踏み切ったもの • もともとアワード向けに作っていたスキルと全く同じギミックのスキルが 先に公開されてしまった スキルから招待コードを発行し その場に集まったメンバーの LINE Botでマルチプレイ ちなみに最優秀賞スキル 何も出さないのは悔しいので「腹話術」を調整して公開することに…
  13. 13. しかし無音無限ループは危険な技… • 無音無限ループ中ではClovaの音声コントロールが無効化される ・・・ ねぇClova ねぇClova!!! ねぇClova? • Botからの終了コマンド実行をしなければならない • Botを友だち追加していないと詰む(デバイス再起動しかなくなる)
  14. 14. ダメ元でストア申請! • 「無音無限ループはスキルの幅が広がると思うのでどうか通して…!」 と泣きつきながら申請 • さすがに一発通過とはならずリジェクトされた • 細かい指摘ポイントはほかにもいくつかあったが、主だったものは以下 友だち追加していない場合には先に進めないようにしてほしい 音声でスキルを終了できるようにすることは必須 ⇒ 連携必須のスキルの場合は必ずチェックされるポイントっぽい 説明文への明記も必須! ⇒ やはりつっこまれた。ここを対応しないと公開できない…
  15. 15. がんばって検証してみたら • 無音無限ループ中、 ✓shouldEndSessionをfalseにした状態で ✓Clovaに何らかの発話をさせると ✓その後の一定時間(無音mp3再生終了まで)は Clovaがウェイクワードなしで指示を聞き取る状態になっていた • これまで無音mp3を1秒にしていたため気づかなかった • mp3再生中、ウェイクワード「ねぇClova」で指示を聞いてくれる • よくよく考えてみれば、これはAudioPlayerの機能として当然の動き
  16. 16. つまり mp3が再生中は音声コントロールが可能に! 無音mp3の長さが一定以上なら「止めて」も効く(聞く)! 無音再生 無音再生 無音再生 こんにちは 無音再生 ねぇClova 音声で指示が可能 音声で指示が可能
  17. 17. 無音無限ループ “安全版” • 友だち追加していない場合にスキル起動しないように • 無音無限ループでなくともBot必須のスキルの場合は 審査でチェックされる • 無音mp3の長さを「5秒」に • 反応速度の許容範囲と音声指示に必要な長さのぎりぎりの妥協点 無音再生 ねぇClova、止めて 5秒のmp3の場合音声指示が可能な秒数は平均2.5秒 ⇒ 終了指示が言いきれる確率をぎりぎり許容可能なレベルに
  18. 18. まとめ • 無音無限ループは禁術じゃなかった! • でも禁術認定されたほうがなんかかっこよかったかもしれない • 無音無限ループはClovaにのみ許された奥義! • ぜひ活用して全く新しいスキルを創造してみてください • 「テキスト腹話術」も使ってみてね https://github.com/himanago/ClovaVentriloquism ★ソースコードはこちら(ストア公開版反映済み)
  19. 19. 宣伝 • 1冊目:LINE API Expert本(共著。LAEじゃないけど参加させてもらえた) • 今回の「無音無限ループ」のClovaスキルへの活用方法を詳しく • 作例として「絵本読み聞かせ」「テキスト腹話術」と新作を載せる予定 • 2冊目:Azure+AIアシスタント本(単著) • AzureでClovaをはじめAlexa/Googleアシスタントの拡張スキル開発をする方法 • ノンコーディングの初心者向け開発手法からFunctions等を使った応用的なクロス プラットフォーム対応まで 技術書典7で本を書きます!(2冊)

×