iOS / Swift における対話型インターフェースの作成 | try! Swift Tokyo 2018 Day2-12

アプリで対話型インターフェースを実現するための最新技術を紹介します。AppleAPIAmazon Lexのような他社の技術による音声認識を見てみましょう。また、音声再生における別なストラテジーについても紹介します。さらに、アプリで対話型インターフェースを構築するにあたってのベストプラクティスについてもお話します。

iOS / Swift における対話型インターフェースの作成

f:id:niwatako:20180302153339j:plain

ウェンディと申します。対話型インターフェースをiOSで作る

少し自己紹介です。5年、Pinterestでやっています。対話型インターフェースプロジェクトを幾つかやっていますが、学んだことを共有したいと思います

f:id:niwatako:20180302153537j:plain

f:id:niwatako:20180302153542j:plain

対話型インターフェースがあります。タイピングしてやり取りするチャットボットもあります。音声インターフェースをはなします。

なぜエキサイティングか

祖父母を訪ねましたが、おじいちゃんおばあちゃんの世代でiPadなどを使うのま不可能、でも対話型インターフェースなら可能。

f:id:niwatako:20180302153649j:plain

f:id:niwatako:20180302153656j:plain

面倒なことはソフトウェアがやってくれてユーザーが意識しなくて良いのがよい

実例を見てみましょう

f:id:niwatako:20180302153719j:plain

Alexaなどです。シャンプーをもう一度頼んで、ということができる。

f:id:niwatako:20180302153741j:plain

音楽再生

ピザオーダー

f:id:niwatako:20180302153746j:plain

我々のアプリに同統合できるでしょうか

音声認識を行っていく方法何十とあるでしょう。

Speech Recognition API AmazonLex...

どれを使うべきか f:id:niwatako:20180302153831j:plain Speech Recognition APIはSiriのバック。

サーバー側で認識が行われる。

f:id:niwatako:20180302153910j:plain

f:id:niwatako:20180302153915j:plain

1時間1000リクエストは殆どのケースで十分だと思います

事前録音されたものを使うことができます。

f:id:niwatako:20180302154002j:plain

f:id:niwatako:20180302154017j:plain

オーディオファイルがあります。SpeechRecognizerをイニシャライズします。 APIが使えるか確認します。isAvailable

recognitionTaskで結果が得られる

isFinalで成功したか分かる。

ライブ音源でも似たような形。

f:id:niwatako:20180302154215j:plain

f:id:niwatako:20180302154219j:plain

f:id:niwatako:20180302154221j:plain

音声が入るとともに認識作業が進んでいる。

そしてエンジンをストップ売る。

third partyエンジンもみていきます

Alexaがよいとか、Googleが抜いたとか、いろいろ言われていて、どれがWinnerというのがまだ無いですが

f:id:niwatako:20180302154255j:plain

これらは一定無料で、そこから課金が始まります。

f:id:niwatako:20180302154337j:plain

Appleで住むならそちらを使ったほうが良い。

Lex

f:id:niwatako:20180302154411j:plain

ハンズフリーなレシピを作りたかった。 見る時に手を使わずに指示したい、前後のステップに異動したい。インテントでコントロールされる。SpeechRecognitionの1段上のレイヤーにある

NextStepIntentを作る

f:id:niwatako:20180302154514j:plain

Next Step 次、 what's next 次は?

のように。

次のステップに行きましょうというのを、具体的にマッチしていなくてもLexが判断できるようにします。

Slotを構成してみたいと思います。ピザの注文の時はトッピングや住所屋は時間をユーザーに聞く。

f:id:niwatako:20180302154623j:plain

f:id:niwatako:20180302154628j:plain

認識したあとは、アプリケーションの方でロジックを作る

f:id:niwatako:20180302154703j:plain

ステップに2つのフレーズがあります

右上でビルドできます。テストしましょう

f:id:niwatako:20180302154718j:plain

これが期待どおりに動いているのでサーバー側でiOSのコードをここから作りiOS側で使います。

AppDelegate didFinishLaunchingwithOptions

f:id:niwatako:20180302154813j:plain

f:id:niwatako:20180302154833j:plain

f:id:niwatako:20180302154851j:plain

f:id:niwatako:20180302154931j:plain

f:id:niwatako:20180302154934j:plain

これによってビジネスロジックのDictionaryをスロットします。

f:id:niwatako:20180302155001j:plain

Lexが話している間にローディングされる

エラー処理について

インプット認識できない場合はClanification のフレーズがでます

f:id:niwatako:20180302155037j:plain

ハングアップ後に繰り返す事ができる

f:id:niwatako:20180302155112j:plain

音声認識APIとLexのプラス名マイナス面まとめたいと思います。まず無償である。

f:id:niwatako:20180302155147j:plain

Lexのベネフィットは高いレベルでのものが抽象化できるという話をしました。

f:id:niwatako:20180302155249j:plain

ユーザーに録音していることを知らせる

f:id:niwatako:20180302155308j:plain

f:id:niwatako:20180302155311j:plain

f:id:niwatako:20180302155330j:plain

パスワードや医療情報を認識すべきではない

f:id:niwatako:20180302155357j:plain

f:id:niwatako:20180302155400j:plain

[広告]面白かったら、ためになったら

  • はてなブックマークSwift タグをつけてブックマーク!
  • 「インターネットで生活を楽しく豊かにしたい」仲間を募集しています
  • Bitcoin: 3KGqXtR1ZaGVdkvcw8CCNrkDxDhdbZBYHL