はじめに
これの続きです。別に続けるつもりは特に無かったのですが、先日作った「抵抗値換算」の審査がリジェクトされたので色々と修正していました。今回はそれについて書きます。もしかしたら今後の参考になるかも?
Clovaの呼び名が違う
正しくは「ねぇ、Clova」です。私は「ねえ、Clova」にしてました。何が違ったのかというと「え」じゃなくて「ぇ」だったんです。これは言われないと気付かないぞ。。。
音声認識の揺らぎに対応していない
これはどういうことかというと、私のスキルを例とするならば、「橙橙黄金」というカラーコードの並びをClovaに話したとしてClovaは「 大大大大嫌い」や「大大大大飢饉」などと別の読み方もしくは別の漢字として認識してしまうわけです。
この音声認識の評価をしたい場合は、「対話モデルを編集」を開くと左下に「ダッシュボード」と「発話履歴」を切り替えるメニューがあります。音声認識には自分のアカウントで登録したClovaを使ってできます。実際に以下のように誤認識とかが分かって便利です。
こういう誤認識はテストしていて結構面白かったです。言葉の読み方があっていても「黄金」が「基金」で漢字としては間違っているからインテントとして扱われなかったり、「灰赤赤金」を「早川亜希」という人名として聞き取ったりしてました。
多分この「抵抗値換算」は色の並びという少し特殊といえば特殊な単語を扱っているわけで、もう少し一般的な単語や人名に変換されたのかな?とか色々な想像ができました。
想定しない発話が来ると無言でスキルを終了される
これは普通にうっかり忘れてました。つまりは「何のインテントも受け取れなかったとき」の処理がかけてなかったということです。まあ単純に実装するだけの話なのですが、どうせなので前回までインテントの分岐if文で書いていたところをswitchで分岐させました。こっちの方がコードが見やすくなったと思ってます。というかこの記事でもswitchで分岐させると書いてました。。。
「1キロオーム」などというインテントに対して「undefined」と返す
これは前回の記事でも課題点として挙げていました。解決するために「CLOVA.UNIT」のビルトインスロットを使うことを検討することにしました。これは単位つきの数字に対応できるスロットです。
しかし問題が発生しました。何故か知りませんがこいつ「キロ」に全然反応しない!「100メガ」というと単位つきの数字として認識してくれるのに「100キロ」というと単純に「1000」という数字として認識してくれる!!しかし何故か「1キロ」はそのどっちでもない反応をしました。
なんにしろ使えたものじゃないので諦めました。とりあえず問題は単付きの数字に対して「undefined」と返すことだという理解に切り替えて、インテントが「undefined」という文字列を受けたったときには「単位なしの数字でお願いします。」という返しで妥協することにしました。
おわりに
今回リジェクトをもらったわけですが、運営の方からかなり懇切丁寧に修正箇所とその解決方法も教えてくれたので有難かったです。逆にリジェクトを恐れずにどんどんスキルを出していこうという励みになりました。
とりあえず今回はこんな修正でもう一回申請してみました。またリジェクトが来たら続きの記事を書くかもしれません(笑)。