Tech Racho エンジニアの「?」を「!」に。
  • 開発

Alexaスキル開発で遊んでみた話

BPSの福岡拠点として一緒にお仕事させて頂いてます、株式会社ウイングドアのモリヤマです。

最近、運良くEcho Spotを手に入れました。

これを機に何かスキル作ってみたいなと思い「Alexaスキル開発トレーニング」試してみたら簡単に作れました。

今回は開発トレーニング後に行なった、初めてスキル開発の内容を軽く紹介させていただきます。

はじめに

カードゲームやボードゲームなどアナログゲームが大好きです。
中でも「ワンナイト人狼」は手軽にサクサク遊べるので最高です。

しかし!

人数が少ない時は、何度もゲームマスターやる必要があり地味に大変です。
ネット上には便利な司会録音動画なども存在してますが、なんとなくしっくり来ないです😥

スマホのアプリ版という選択肢があるのですが、直接カードを触りたい系の人なので、
ワンナイト人狼サポートスキルを自分用に作ってみました。
(既にスキルが存在する思って探したのですが、人狼のルール説明のスキルぐらいしか見つからなかったです。)

※ 作成したサポートスキルは、本記事の最後に動画として載せております。

作ったスキルについて

  • ワンナイト人狼のマスター業務を肩代わりしてくれるスキル(非公開)
  • 基本トレーニングシリーズの内容のみで実装

この記事の対象

  • Alexaスキル開発に興味はあるけど...ぐらいで止まっていて初めの一歩が踏み出せていない方

注意点


1nite_jinro.stores.jpより

やったこと

  1. カスタムインテントで分岐
  2. 音声合成マークアップ言語(SSML)を使って、読み上げが自然になるように調整
  3. 議論の時間をユーザ入力で設定(;・3・)~♪  

1. カンスタムインテントで分岐

インテントとは

インテントとはユーザーの音声によるリクエストを満たすアクションのことです。
カスタムインテントを作成して、サンプルの発話を登録する事で、自由にアクションを増やす事ができます。

インテントの設定する上で、VUIデザインはしっかり考えましょう。
VUIとは、Voice User Interface(ボイスユーザーインターフェース) の略です。

VUIをしっかり考えて発話を設定しないと、分岐で結構失敗します。

初めに「YES・はい・NO・いいえ」等のシンプルな設定しかしていない状態で、
友人にテストを依頼したら、「動かん!」とハッキリ言われました(´・ω・`)

起動時の確認(ルール説明の有無)

スキル起動時「ルール確認は必要ですか?」と質問されます。
これに「はい / いいえ」で答えてもらう想定で初めに設定を行いました。

それだけでは全然ダメでした。
理由は簡単『回答パターンが網羅されていない』からです!

質問を「はい / いいえ で答えてください」とすれば回答を誘導出来ますが、
それではAlexaの発話時間が長くなり、結局ユーザーフレンドリーではありません。

最終的には、以下の内容で落ち着きました。

役職能力の確認

スロットを使用するカスタムインテントを作成して設定を行いました。
スロットとは、インテントで使用できるリストです。

今回は純粋に役職を名をスロットに設定しました。
類義語には、カードの絵柄を見て出てきそうな単語を設定しています。

またスロット設定した事で、インテントの発話登録を下記画像のように設定できます。
これでスロットの[値]と[類義語]の設定内容を、まとめて発話に登録が出来ました。
とても便利です。パターンの多い発話を登録する時は必須ですね。

2. 音声合成マークアップ言語(SSML)を使って、読み上げが自然になるように調整

SSMLから3種類のタグを使用して発話の調整を行いました。

  • breakタグ
  • amazon:effectタグ
  • prosodyタグ

breakタグ

breakタグは設定した時間の間、発話を停止してくれます。
今回は各役職のターン終わりのメッセージ使っています。

「...」の部分もbreakでよかった感...🤔

間の調整などで使えますが、現在の最大値10秒です。
連続して30秒や1分停止させるにはちょっと工夫が必要です。
時間が固定であれば、連続して入力してやればいいんです。ヾ(-ω-;)ォィォィ

amazon:effectタグ

effectタグは、特殊効果をつけたい時に使用できます。
今はまだ囁きの「whispered」しか無いです。

これで稀に発生する、怪盗ターンのうっかりミスを囁きで教えてくれます。

prosodyタグ

prosodyタグを使う事で、読み上げのスピードなどを設定出来ます。
設定可能な項目には[rate][pitch][volume]があります。

rate
音声の速さを変更できます。
「x-slow」「slow」「medium」「fast」「x-fast」の五段階、または「n%」で指定出来ます。
(指定できる最小値は20%です)
pitch
音声のトーン(高さ)を増減できます。
「x-low」「low」「medium」「high」「x-high」の五段階、または「±n%」で指定出来ます。
volume
音声の音量を変更できます。
「silent」「x-soft」「soft」「medium」「loud」「x-loud」の五段階、または「±ndB」で指定出来ます。

※ 詳しくは音声合成マークアップ言語(SSML)のリファレンスをご覧ください。

今回は、最後の人狼を指名するフレーズを調整しました。

ただし今のままではかなり不自然です。。。

と、とにかくスピードを変えるだけでも印象が変わるので、必要に応じて使いこなしましょう。

3. 議論の時間をユーザ入力で設定

任意の時間を設定できるように作り込もうと思っていたのですが、時間が足りず今回は見送りです。

実装方法は「Alexaでタイマースキルを作るときにつまったこと」の記事を参考にしようと考えていました。

この部分はまた後日チャレンジです。

最後に

こちらが今回作ったサポートスキルの動画になります。

敷居が高いと思っていたAlexaスキルですが、お遊び程度なら簡単かつ楽しく開発が進みました。

今回のお試し開発ではVUIを試行錯誤する楽しみや重要性を身を以て体感しました。
初歩的な部分しか触れていませんが、本腰いれて学習しオリジナルゲームを作りたいと考え始めたモリヤマでした◎


株式会社ウイングドアでは、Ruby on RailsやPHPを活用したwebサービス、webサイト制作を中心に、
スマホアプリや業務系システムなど様々なシステム開発を承っています。


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。