はじめに
GW Advent Calendar の LINE Developer Community 1日目を担当しますnorippyです。
GW、旅行も行かずこんな記事を書いています。なんだかんだ、開発は楽しいですよね。
私は普段はハードウェアエンジニアでソフトの知識は大してありません。ただ、好きでAlexaスキルの開発をしているのですが、少しClovaスキルの開発もしてきました。
その中で、見つけたobniz IDを一発で全部取得する方法について書きます。(コードの話はないです)
ただこの内容は他にも応用ができて、この記事の内容を生かして設計をすれば、obnizに限らず音声認識率自体が向上すると考えています。
obnizって何?
obnizはESP32というWi-FiとBluetooth Low Energyが使えるマイコンが実装された開発ボードです。
ただこの開発ボードはとても便利で、普通のマイコンと違い、web上でコードを書くことで、ESP32の信号線の動作(電圧をHIGHにしたりLOWにする)ことができます。
つまり、ソフトウェアエンジニアがIoTを始めるには一番取っ掛かりが良いマイコンではないかと思います。
このobniz、もう一つの特徴は、8桁の数字から構成されるデバイスID で管理されており、このデバイスIDを使うことで、自分が所有しているマイコンを動かすことができるようになります。またobniz cloudサービスを利用することで、自分の作ったコードを自分だけで楽しむのではなく、みんなに使ってもらうこともできます。
ということは・・・
数字で管理 + 他の人のマイコンも動かせる環境が作れる = スマートスピーカーで利用できる!
わけです。
実際にclovaではobnizを使ったClovaスキルが作られ、公開されていますし、昨年のLINE BOOT AWARDS 2018ではエンジニア部門賞はobnizを使った作品でした。ありがたいことに、これ私なのですが、開発ではClova CEKでobnizのデバイスIDを認識するのに苦労しました。
Clova CEKでobnizのデバイスIDを認識してみる
ということで、早速CEKの話です。
最初にobnizのID 8桁のスロットを認識できるように、カスタムスロットを作ります。
カスタムスロットを作った理由ですが、
ビルドインスロットよりも決められた数字しか出ないのであれば限定してあげたほうが、その項目から判断しようとするので認識率が上がります
次に、インテントを作ります。
このインテントの作り方が重要です!(マジです!)
開発の段階で色々トライしたのですが、インテントの作り方を間違えると、全く認識できなくなります。
動けフレンズロボットというobnizを使ったスキルのインテント一覧は以下になります
inputNumIntentというのがありますね。
これの中身はこのようになっています
このインテントの特徴は、これ以外のサンプル発話がありません。
例えばここに
「こんにちは」
「もう一度教えて」
など入れると、認識ができなくなります。
数字だけなら数字をとるためのインテントを作ります。これが大事です
この様に設計しないと認識ができないというのは、実際にLINEのエンジニアの方に教わりました。
どうも機械学習のアルゴリズムの話と絡んでいるようで、全く違う複数の認識結果の可能性を与えると、結果として認識ができないということになるようです。
まとめ
Alexaスキルと違い、細かくインテントを分けることでClovaスキルの認識率は向上します。
なんかうまくいかないなぁと思ったら、ぜひインテントをわけてみてください。