Help us understand the problem. What is going on with this article?

iOS10で使えるようになるSiriKitじゃないSpeech.framworkについて

More than 3 years have passed since last update.

iOS10で使えるようになるSiriKitじゃないSpeech.framworkについて

by yimajo
1 / 45

このスライドは

WWDC16. Meetup@Wantedly with 日本経済新聞社
http://wantedly.connpass.com/event/33967/

@yimajo 発表資料です


おやくそく

  • Apple社とのNDAには最新の注意を払って誤解のないようにしたい
  • ここに集まっている人たちは皆AppleとのNDAを結んでいて私の話すことは既知の情報です
  • ただしスライドの写真を撮ってtweetするのはNDA警察に余計な心配をされるかもしれないので我慢しましょう
  • Apple Developer Agreement

祝: iOS10でSiriを開発者が自由に使えるようになった!!


ヽ(´∀`)八(´∀`)ノイエーイ


勘違い乙


Siriがあたかも自由に扱えるようになったような


メディアの報道だけだと勘違いしたままになるので整理します


まず概要から言うよ


1. Siri画面上からチャットでアプリと連携する機能



2. サードパーティアプリから音声認識が使えるAPI


Siriに関連しているのはこの2つ


これをごっちゃにして SiriKit と呼んでしまってる奴が多い


m9(^Д^)


siri.003.jpeg


まずSiriKitとは

Siriからエクステンションでアプリの機能を呼び出す機能


Intents.frameworkIntentsUI.frameworkからなる

連携できる限定的な用途

  • Audio or video calling
  • Messaging
  • Payments
  • Searching photos
  • Workouts
  • Ride booking

ちなみにSiriKitというフレームワークはない

UIKitUIKit.framework

しかしSiriKit.framworkなんてない


じゃあ既存の ~Kit はフレームワークか調べてみた


調べたら全ての~Kit~frameworkだった(iOS9)

  • UIKit.framework, WebKit.framework, MapKit.framework, HomeKit.framework, PassKit.framework, CallKit.framework, AVKit.framework, MetalKit.framework, GameKit.framework, GamePlayKit.framework, HealthKit.framework, ReplayKit.framework, SceneKit.framework, SpriteKit.framework, CloundKit.framework, CoreAudioKit.framework, WatchKit.framework, PushKit.framework, GLKit.framework, NewsstandKit.framework, EventKit.framework, EventKitUI.framework, StoreKit.framework, TVMLKit.framework

その逆にframeworkだけど ~Kitじゃないものはもちろん沢山ある


SiriKitは

  • Intents.framework, IntentsUI.framework

SiriKitという命名はマーケティング上の名前っぽい感じがあるんだなあ


┐(´ー`)┌


このモヤモヤ感を言葉にすると

  • Siriから呼び出すアプリ連携は設計/実装上はSiriに依存しないのでIntent.frameworkIntentUI.frameworkとなっている
    • ->いいね!
  • それらをSiriKitと呼ぶので~Kit は frameworkではなくなった
    • Kitって何...

本題


次にアプリから音声認識が使えるAPIについて


Speech.framework

  • 音声認識とテキストへの文字起こしをサポートするAPIが追加された
  • 音声をテキストにしてくれるだけではなく、文脈に応じて単語の変更、単語ごとにレスポンスを返す

APIのレスポンス


public class SFTranscription : 
        NSObject, NSCopying, NSSecureCoding {

    public var formattedString: String { get }

    public var segments:
        [SFTranscriptionSegment] { get }
}

例えば "こんにちは世界"と入力した場合
segments[0].substring = ["こんにちは"]
segments[1].substring = ["世界"]


使い方

  • 自分のアプリから import Speechで使える
  • PrivacyとSecurityの面から、パーミッション許可アラートが利用時に表示される
  • info.plistにパーミッション許可用にユーザに表示する文面を書き込む

SiriのおさらいとSpeech.frameworkの違いを図にしてみる


siri.001.jpeg


siri.002.jpeg


FAQ(俺はこう思ったっス)


なぜSiriKit.frameworkがなくIntents, IntentsUI, Speech.frameworkと分離してる?

  • Siriはインフラの一つだし
  • 開発者から見たら分離されたframworkのほうが正しい

もともとキーボードに音声入力あるよね?

  • UIとして入力欄UITextFieldとキーボードが必要
  • 入力されたテキストは単語ごとに分かれているわけではない

キーボード.png


音声認識で可能になるアプリって?

  • 音声で検索したり
  • 音声でページをめくったりする電子書籍
  • 議事録作成アプリ

(利用制限をUIなどでうまく回避したりできれば...)


音声認識アプリ作成時のTips?

  • デバッグ時に繰り返し喋るのが恥ずかしい
  • ユーザもオフィスや人が多い所で音声認識を利用するとは思えない
    • -> 電車の中では音声認識は使われないだろうな

まとめ

  • SiriKitというのはマーケティング用語臭が強い
  • 「それSiriKitで検索できるんでしょ?」みたいな方への返答にこの資料をお使い下さい

自己紹介


@yimajo
Yoshinori Imajo
https://stargzr.net を作っています


Stargzrでは

  • 昨日新しくPROエンジニアプランというのを実装したり
  • stargzr.fmをやっています

スクリーンショット 2016-06-30 0.50.00.png


参考URL

yimajo
株式会社キュリオシティソフトウェアの代表です。iOSアプリを作っています。最近はCombine frameworkガイドブック / RxSwift研究読本などを書いてます。
https://swift.booth.pm/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away