Submit Search
Upload
AVSpeechSynthesizerとロケール
•
4 likes
•
6,972 views
T
toyship
Follow
Cookpad Potatotips #1 で発表しました。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 11
Download now
Download to read offline
Recommended
15分でできるAmazon Alexa Skill開発
15分でできるAmazon Alexa Skill開発
拓哉 中山
Downalodable Storyboard
Downalodable Storyboard
Yuta Tokoro
Bluetooth LEとiBeaconを使った、すれ違い通信
Bluetooth LEとiBeaconを使った、すれ違い通信
幸雄 村上
アプリのバックグラウンド処理 | iOS 7エンジニア勉強会
アプリのバックグラウンド処理 | iOS 7エンジニア勉強会
Yahoo!デベロッパーネットワーク
Time for Xcode Behavior
Time for Xcode Behavior
toyship
Notifications in iOS10
Notifications in iOS10
toyship
Universal Link
Universal Link
toyship
Can we live in a pure Swift world?
Can we live in a pure Swift world?
toyship
Recommended
15分でできるAmazon Alexa Skill開発
15分でできるAmazon Alexa Skill開発
拓哉 中山
Downalodable Storyboard
Downalodable Storyboard
Yuta Tokoro
Bluetooth LEとiBeaconを使った、すれ違い通信
Bluetooth LEとiBeaconを使った、すれ違い通信
幸雄 村上
アプリのバックグラウンド処理 | iOS 7エンジニア勉強会
アプリのバックグラウンド処理 | iOS 7エンジニア勉強会
Yahoo!デベロッパーネットワーク
Time for Xcode Behavior
Time for Xcode Behavior
toyship
Notifications in iOS10
Notifications in iOS10
toyship
Universal Link
Universal Link
toyship
Can we live in a pure Swift world?
Can we live in a pure Swift world?
toyship
Swift Protocol and Selector
Swift Protocol and Selector
toyship
What's new Swift3
What's new Swift3
toyship
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
toyship
My first tvOS
My first tvOS
toyship
3D touch for iOS
3D touch for iOS
toyship
Contents blocker on iOS9
Contents blocker on iOS9
toyship
Embedded framework and so on
Embedded framework and so on
toyship
はじめてのWKInterfaceController
はじめてのWKInterfaceController
toyship
App extension for iOS
App extension for iOS
toyship
サーバーからiOSアプリを変更する
サーバーからiOSアプリを変更する
toyship
Xcode bot
Xcode bot
toyship
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
Hiroshi Tomioka
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
More Related Content
More from toyship
Swift Protocol and Selector
Swift Protocol and Selector
toyship
What's new Swift3
What's new Swift3
toyship
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
toyship
My first tvOS
My first tvOS
toyship
3D touch for iOS
3D touch for iOS
toyship
Contents blocker on iOS9
Contents blocker on iOS9
toyship
Embedded framework and so on
Embedded framework and so on
toyship
はじめてのWKInterfaceController
はじめてのWKInterfaceController
toyship
App extension for iOS
App extension for iOS
toyship
サーバーからiOSアプリを変更する
サーバーからiOSアプリを変更する
toyship
Xcode bot
Xcode bot
toyship
More from toyship
(11)
Swift Protocol and Selector
Swift Protocol and Selector
What's new Swift3
What's new Swift3
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
My first tvOS
My first tvOS
3D touch for iOS
3D touch for iOS
Contents blocker on iOS9
Contents blocker on iOS9
Embedded framework and so on
Embedded framework and so on
はじめてのWKInterfaceController
はじめてのWKInterfaceController
App extension for iOS
App extension for iOS
サーバーからiOSアプリを変更する
サーバーからiOSアプリを変更する
Xcode bot
Xcode bot
Recently uploaded
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
Hiroshi Tomioka
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
Recently uploaded
(9)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
AVSpeechSynthesizerとロケール
1.
AVSpeechSynthesizerとロケール @TachibanaKaoru 2013/11/13
2.
自己紹介 • @TachibanaKaoru • http://www.toyship.org/ •
渋谷の genesix で働く iOSエンジニア。 • 個人的にはこんなアプリを作ったりしています。 Toy Jigsaw • Cookpad歴 11年 ( http://cookpad.com/kitchen/18627)
3.
AVSpeechSynthesizerとは • iOS7から導入されたAPIが公開された音声読み上げ機能。 • 文字列を与えると読み上げをしてくれます。 •
delegateを使うと、「今読んでいる単語」なども取り 出せます。 • 詳しい使い方はこちら。 • https://github.com/toyship/StoryTeller • http://www.toyship.org/archives/1483
4.
ロケールの設定 • 文章を正しく読ませるためには、AVSpeechSynthesizerに読み上げる文の言語 に対応したロケール(NSLocale)を設定しないと正しく読み上げてくれません。 • AVSpeechSynthesizerが文章の言語を自動判別してくれるわけではありませ ん。 •
今のところ、36個のロケールに対応しています。 ! ! ! ! ! ! ! ! ! AVSpeechSynthesizer* mySpeechSynthesizer = [[AVSpeechSynthesizer alloc] init]; mySpeechSynthesizer.delegate = self; NSString* targetText = @"Hello World!"; AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:targetText]; AVSpeechSynthesisVoice* englishVoice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"]; utterance.voice = englishVoice; [myspeechSynthesizer speakUtterance:utterance];
5.
でも言語判定めんどくさいよね……。 Web APIは有料だし……。
6.
システムの挙動は…… • iOSの純正アプリ(メールなど)では選択した文章 に応じて、ちゃんと適切に言語を判断。 • 例えばiPhoneのシステムロケールを日本語にした 状態でも、英語の文章を選択すると英語の声で読 んでくれます。
7.
探したらありました、NSStringの言語判定 • CFStringTokenizerCopyBestStringLanguageを利用 ! ! CFStringRef
text = (CFStringRef)CFBridgingRetain(self.inputText.text); ! CFRange range = CFRangeMake(0, CFStringGetLength(text)); ! NSString *language = (NSString*)CFBridgingRelease(CFStringTokenizerCopyBestStringLanguage(text, range));
8.
CFStringTokenizerCopyBestStringLanguage仕様 • 指定した文字列の言語コードを返す。判別にはおよそ200から400文字が必 要。 • 30言語を判別可能。(アラビア語、ブルガリア語、チェコ語、デンマーク 語、ドイツ語、ギリシャ語、英語、スペイン語、フィンランド語、フランス 語、ヘブライ語、クロアチア語、ハンガリー語、アイスランド語、イタリア 語、日本語、韓国語、ノルウェー語、オランダ語、ポーランド語、ポルトガ ル語、ルーマニア語、ロシア語、スロバキア語、スウェーデン語、タイ語、 トルコ語、ウクライナ語、簡体中国語、繁体中国語) •
でも実際の判別はちょっと微妙かも……。
9.
AVSpeechSynthesizer Tips • AVSpeechSynthesizerを使うときには、 CFStringTokenizerCopyBestStringLanguageを使って文 章の言語判定をしましょう!
10.
おまけその1 • なぜ、AVSpeechSynthesizerに指定するのは言語コードではなくて、ロケール のなんでしょうか。言語だけ指定すれば読んでくれるんじゃない?という気 もしますが……。 • ヒント:「12/3/2012」をen-GB(イギリス英語)とen-US(アメリカ英 語)で読ませてみてください。
11.
おまけその2 • AVSpeechSynthesizerに設定する「ロケール」ですが、iPhoneでは、システム 言語とシステムロケールとは別々に設定できますよね。 • 例えばシステムの言語は日本語だけど、ロケールはen-GBになっていた場合は AVSpeechSynthesizerのロケールはどうなるでしょうか。 •
ja-JPになります。 • システム言語とシステムロケールを言語を優先してAVSpeechSynthesizer のデフォルトロケールが決定されるようです。([NSLocale currentLocale] がAVSpeechSynthesizerのデフォルトロケールではないことに注意。)
Download now