Submit Search
Speech Framework
1 like
1,542 views
Gaprot
iOS 10 で追加された Speech Framework の概要や使い方についてまとめました。
Mobile
Read more
1 of 40
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
More Related Content
PDF
SiriKit iOS10
Gaprot
PPTX
Vagrant
Hiroshi Toyama
PDF
第5回 デジタルガジェット祭り! スマートスピーカー特集(5)
aitc_jp
PPTX
Fluentd
Hiroshi Toyama
PDF
Spring social の基礎
Takuya Iwatsuka
PPTX
[デブサミ秋2015] 新卒入社エンジニアが2年間fluentdを運用して学んだ事いろいろ
gree_tech
PDF
【20211027_toranoana.deno#2】とりあえずDenoを CloudRunで動かしてみる
虎の穴 開発室
PPTX
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
Toshiharu Sugiyama
SiriKit iOS10
Gaprot
Vagrant
Hiroshi Toyama
第5回 デジタルガジェット祭り! スマートスピーカー特集(5)
aitc_jp
Fluentd
Hiroshi Toyama
Spring social の基礎
Takuya Iwatsuka
[デブサミ秋2015] 新卒入社エンジニアが2年間fluentdを運用して学んだ事いろいろ
gree_tech
【20211027_toranoana.deno#2】とりあえずDenoを CloudRunで動かしてみる
虎の穴 開発室
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
Toshiharu Sugiyama
Similar to Speech Framework
(20)
PDF
決済金融から始めるデータドリブンカンパニー #yjmu
Yahoo!デベロッパーネットワーク
PPTX
Terraform with Bitbucket pipeline
Masatomo Ito
PDF
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
心 谷本
POTX
決済金融から始めるデータドリブンカンパニー
Tokuhiro Eto
PPTX
Nifty cloud jtf2014ハンズオン資料
亮介 山口
PDF
Ec cube開発合宿 プラグインセミナー
Ayumu Kawaguchi
PDF
JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...
David Buck
PDF
FFR EXCALOC
FFRI, Inc.
KEY
1.29.user,user,user
Tonny Xu
PDF
Lithium Labo #1
Yusuke Ando
PDF
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
akira6592
PDF
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
akira6592
PDF
人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記
心 谷本
PPTX
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐
CODE BLUE
PPT
BBBBB
arase_utagoe
PPT
1MB
arase_utagoe
PPTX
ドリコムのInfrastructure as code
Yosuke Hiraishi
PDF
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Yahoo!デベロッパーネットワーク
PDF
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
Drecom Co., Ltd.
PDF
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
JPCERT Coordination Center
決済金融から始めるデータドリブンカンパニー #yjmu
Yahoo!デベロッパーネットワーク
Terraform with Bitbucket pipeline
Masatomo Ito
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
心 谷本
決済金融から始めるデータドリブンカンパニー
Tokuhiro Eto
Nifty cloud jtf2014ハンズオン資料
亮介 山口
Ec cube開発合宿 プラグインセミナー
Ayumu Kawaguchi
JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...
David Buck
FFR EXCALOC
FFRI, Inc.
1.29.user,user,user
Tonny Xu
Lithium Labo #1
Yusuke Ando
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
akira6592
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
akira6592
人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記
心 谷本
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐
CODE BLUE
BBBBB
arase_utagoe
1MB
arase_utagoe
ドリコムのInfrastructure as code
Yosuke Hiraishi
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Yahoo!デベロッパーネットワーク
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
Drecom Co., Ltd.
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
JPCERT Coordination Center
Ad
More from Gaprot
(13)
PDF
AR開発高速化!「CFA」作りました!
Gaprot
PDF
Unity + iOS/Android VR ことはじめ
Gaprot
PDF
1201 ギャップロ軍団企画書
Gaprot
PDF
Proactive Suggestions
Gaprot
PDF
New Notification API in iOS 10
Gaprot
PDF
iOS 10 new Camera
Gaprot
PDF
HTML5 + JavaScriptでDRMつきMPEG-DASHを再生させる
Gaprot
PDF
Aiマッシュアップ委員会 仕様説明資料
Gaprot
PDF
GoF のデザインパターンじゃないけど、よくあるパターン
Gaprot
PDF
Java の Collection 関連について整理してみました
Gaprot
PDF
Salmon Hunt
Gaprot
PDF
SONY Camera Remote API
Gaprot
PDF
「バグあるある」と「仕様変更あるある」一挙大放出SP!
Gaprot
AR開発高速化!「CFA」作りました!
Gaprot
Unity + iOS/Android VR ことはじめ
Gaprot
1201 ギャップロ軍団企画書
Gaprot
Proactive Suggestions
Gaprot
New Notification API in iOS 10
Gaprot
iOS 10 new Camera
Gaprot
HTML5 + JavaScriptでDRMつきMPEG-DASHを再生させる
Gaprot
Aiマッシュアップ委員会 仕様説明資料
Gaprot
GoF のデザインパターンじゃないけど、よくあるパターン
Gaprot
Java の Collection 関連について整理してみました
Gaprot
Salmon Hunt
Gaprot
SONY Camera Remote API
Gaprot
「バグあるある」と「仕様変更あるある」一挙大放出SP!
Gaprot
Ad
Speech Framework
1.
Copyright © Up-frontier,
Inc. All rights reserved. Speech Framework 1
2.
Copyright © Up-frontier,
Inc. All rights reserved. アジェンダ • Speech Framework とは • 使い⽅ • 使いどころ 2
3.
Copyright © Up-frontier,
Inc. All rights reserved. アジェンダ • Speech Framework とは • 使い⽅ • 使いどころ 3
4.
Copyright © Up-frontier,
Inc. All rights reserved. …の前に、まずは Keyboard Dictation 4
5.
Copyright © Up-frontier,
Inc. All rights reserved. Keyboard Dictation • iPhone 4S からキーボードに内蔵 されていた、⾳声⼊⼒機能 • OS の機能であって、 アプリの機能ではない • 設定 → ⼀般 → キーボード → ⾳声⼊⼒ 5
6.
Copyright © Up-frontier,
Inc. All rights reserved. Keyboard Dictation • iPhone 4S からキーボードに内蔵 されていた、⾳声⼊⼒機能 • OS の機能であって、 アプリの機能ではない • 設定 → ⼀般 → キーボード → ⾳声⼊⼒ 6 これ
7.
Copyright © Up-frontier,
Inc. All rights reserved. Keyboard Dictation • 有効無効の設定を知るための API がない • 必ずキーボードとセット • キーボード⾔語に依存 7
8.
Copyright © Up-frontier,
Inc. All rights reserved. …では改めて Speech Framework 8
9.
Copyright © Up-frontier,
Inc. All rights reserved. Speech Framework • 平たく⾔うと、⾳声認識APIです • 受け取った⾳声をテキストとして扱う • 認識の部分は Siriと同じエンジン を利⽤ • リッチな結果(ベストと候補、確度など) • ⾳声ファイルからの⼊⼒も可能 9
10.
Copyright © Up-frontier,
Inc. All rights reserved. • マイクを利⽤したリアルタイム⾳声 • wavやmp3などの⾳声データでもOK 10
11.
Copyright © Up-frontier,
Inc. All rights reserved. 注意点 • 基本ネットワーク接続が必須 • リクエストに制限あり (アプリごと、端末ごと) • 機密情報は NG (password, health, financial) • ユーザに親切な UI を⼼がける - 録⾳中、認識途中の結果、最終的な認識結果 11
12.
Copyright © Up-frontier,
Inc. All rights reserved. アジェンダ • Speech Framework とは • 使い⽅ • 使いどころ 12
13.
Copyright © Up-frontier,
Inc. All rights reserved. ① ユーザの許可を得る 13
14.
Copyright © Up-frontier,
Inc. All rights reserved. ユーザ許可 SFSpeechRecognizer.requestAuthorization { status in switch status { case .authorized: case .denied: case .notDetermined: case .restricted: } } 14
15.
Copyright © Up-frontier,
Inc. All rights reserved. ユーザ許可 SFSpeechRecognizer.requestAuthorization { status in switch status { case .authorized: case .denied: case .notDetermined: case .restricted: } } 15 よくある権限ステータス (位置情報アクセスなど)
16.
Copyright © Up-frontier,
Inc. All rights reserved. ユーザ許可 SFSpeechRecognizer.requestAuthorization { status in switch status { case .authorized: case .denied: case .notDetermined: case .restricted: } } 16 デバイス判断で NG 前述の”リクエスト制限”によるもの?
17.
Copyright © Up-frontier,
Inc. All rights reserved. 17
18.
Copyright © Up-frontier,
Inc. All rights reserved. 18
19.
Copyright © Up-frontier,
Inc. All rights reserved. Info.plist <key>NSSpeechRecognitionUsageDescription</key> <string>SpeechFramework の使⽤⽬的</string> 19
20.
Copyright © Up-frontier,
Inc. All rights reserved. Info.plist <key>NSSpeechRecognitionUsageDescription</key> <string>SpeechFramework の使⽤⽬的</string> 20 ローカライズが必要な場合は、 InfoPlist.string を利⽤しましょう。 (plistじゃ視認性も悪いしね)
21.
Copyright © Up-frontier,
Inc. All rights reserved. ② リクエストを作る 21
22.
Copyright © Up-frontier,
Inc. All rights reserved. リクエスト guard let audioURL = R.file.speechMp3() else { print("Could not get file URL!") return } let request = SFSpeechURLRecognitionRequest(url: audioURL) 22
23.
Copyright © Up-frontier,
Inc. All rights reserved. リクエスト guard let audioURL = R.file.speechMp3() else { print("Could not get file URL!") return } let request = SFSpeechURLRecognitionRequest(url: audioURL) 23 対象のファイルのURLを⽣成して
24.
Copyright © Up-frontier,
Inc. All rights reserved. リクエスト guard let audioURL = R.file.speechMp3() else { print("Could not get file URL!") return } let request = SFSpeechURLRecognitionRequest(url: audioURL) 24 リクエストを⽣成する
25.
Copyright © Up-frontier,
Inc. All rights reserved. ③ タスクを作って実⾏ 25
26.
Copyright © Up-frontier,
Inc. All rights reserved. タスク let recognizer = SFSpeechRecognizer( locale: Locale(identifier: "ja-JP")) recognizer?.recognitionTask(with: request) { result, error in guard let result = result else { print("Error on recognition task: (error)") return } self.textView.text = result .bestTranscription.formattedString print(result.transcriptions) } 26
27.
Copyright © Up-frontier,
Inc. All rights reserved. タスク let recognizer = SFSpeechRecognizer( locale: Locale(identifier: "ja-JP")) recognizer?.recognitionTask(with: request) { result, error in guard let result = result else { print("Error on recognition task: (error)") return } self.textView.text = result .bestTranscription.formattedString print(result.transcriptions) } 27 ロケールを指定して SFSpeechRecognizer を⽣成
28.
Copyright © Up-frontier,
Inc. All rights reserved. タスク let recognizer = SFSpeechRecognizer( locale: Locale(identifier: "ja-JP")) recognizer?.recognitionTask(with: request) { result, error in guard let result = result else { print("Error on recognition task: (error)") return } self.textView.text = result .bestTranscription.formattedString print(result.transcriptions) } 28 en-US を指定すれば、⽶英語
29.
Copyright © Up-frontier,
Inc. All rights reserved. タスク let recognizer = SFSpeechRecognizer( locale: Locale(identifier: “ja-JP")) recognizer?.recognitionTask(with: request) { result, error in guard let result = result else { print("Error on recognition task: (error)") return } self.textView.text = result .bestTranscription.formattedString print(result.transcriptions) } 29 事前に⽣成した request を指定して タスクメソッドを実⾏する。
30.
Copyright © Up-frontier,
Inc. All rights reserved. タスク let recognizer = SFSpeechRecognizer( locale: Locale(identifier: “ja-JP")) recognizer?.recognitionTask(with: request) { result, error in guard let result = result else { print("Error on recognition task: (error)") return } self.textView.text = result .bestTranscription.formattedString print(result.transcriptions) } 30 結果はクロージャで受け取る
31.
Copyright © Up-frontier,
Inc. All rights reserved. タスク let recognizer = SFSpeechRecognizer( locale: Locale(identifier: “ja-JP")) recognizer?.recognitionTask(with: request) { result, error in guard let result = result else { print("Error on recognition task: (error)") return } self.textView.text = result .bestTranscription.formattedString print(result.transcriptions) } 31
32.
Copyright © Up-frontier,
Inc. All rights reserved. タスク let recognizer = SFSpeechRecognizer( locale: Locale(identifier: “ja-JP")) recognizer?.recognitionTask(with: request) { result, error in guard let result = result else { print("Error on recognition task: (error)") return } self.textView.text = result .bestTranscription.formattedString print(result.transcriptions) } 32 1番確度の⾼いものを いい感じのフォーマットで受け取る
33.
Copyright © Up-frontier,
Inc. All rights reserved. タスク let recognizer = SFSpeechRecognizer( locale: Locale(identifier: “ja-JP")) recognizer?.recognitionTask(with: request) { result, error in guard let result = result else { print("Error on recognition task: (error)") return } self.textView.text = result .bestTranscription.formattedString print(result.transcriptions) } 33 bestTranscription 導出過程の候補はここにある
34.
Copyright © Up-frontier,
Inc. All rights reserved. 使い⽅まとめ 1. ユーザに許可を求めて 2. リクエストを作って 3. SFSpeechRecognizer にタスクとしてお願い 34
35.
Copyright © Up-frontier,
Inc. All rights reserved. アジェンダ • Speech Framework とは • 使い⽅ • 使いどころ 35
36.
Copyright © Up-frontier,
Inc. All rights reserved. ⾶びつく前に • Keyboard Dictation で実現できないかを まず考える • リクエスト制限などを考えると、 コアの機能には持ってきにくい - 具体的な制限回数については明記なし 36
37.
Copyright © Up-frontier,
Inc. All rights reserved. 考えられるユースケース • 「チーズ」という⾔葉に反応して、 ⾃動でシャッターを切るカメラ (WWDCビデ オ) • 外国語の発⾳練習 • ⾃作キーボードアプリに⾳声⼊⼒機能を実装 • Podcast やボイスレコーダーのテキスト起こし 37
38.
Copyright © Up-frontier,
Inc. All rights reserved. 考えられるユースケース Speech Framework を利⽤した、英単語の発⾳練習アプリ 38
39.
Copyright © Up-frontier,
Inc. All rights reserved. 考えられるユースケース Speech Framework を利⽤した、英単語の発⾳練習アプリ 39
40.
Copyright © Up-frontier,
Inc. All rights reserved. まとめ • 本家 Apple 製の⾳声認識API • 解析エンジンは Siri と同様のもの • マイク⼊⼒とファイル⼊⼒の両⽅で利⽤可能 • 利⽤回数や利⽤時間に制限がある 40
Download