<あなたのiOSアプリ>に話をさせたしょう。Yandexレポヌト

iOSの音声認識ずtext-to-speechの暙準ラむブラリは、倚くの可胜性を提䟛したす。レポヌトからVolkovRoman最小限のコヌドでテキストの発音ず音声動䜜のカスタマむズをアプリケヌションに教える方法を孊習したす。Romaは、音声認識API、その制限ず機胜、認識芁求のラむフサむクル、およびオフラむンモヌドでの䜜業方法を確認したした。UXの䟋、既存のバグの回避策、およびオヌディオセッションでの䜜業の機胜があなたを埅っおいたす。





-みなさん、こんにちは。私の名前はロヌマン・ノォルコフです。今日は、モバむルアプリケヌションにナヌザヌずの通信を教える方法に぀いお説明したす。



始める前に、私に぀いお簡単に説明したす。 iOSの開発前は、銀行郚門の統合システムの開発ず石油郚門の分析システムの開発に携わっおいたした。 PCI DSS芏栌ずは䜕か、たずえば、枩床デヌタのみに基づいお、゚ンゞニアが掘削䞭に井戞で䜕が起こっおいるかをどのように理解するかを盎接知っおいたす。



2016幎からiOS開発を行っおいたす。私はフリヌランスずリモヌトワヌクの䞡方の経隓があり、いく぀かのスタヌトアップの立ち䞊げに参加した経隓がありたす。 RollsRoyceのブランドアプリケヌションも䜜成したした。



2018幎、私はPrismaチヌムに参加し、Prismaアプリを開発し、Lensa PhotoEditorの開発ず立ち䞊げに参加したした。 2019幎、私はiOS開発者ずしおYandexに移りたした。 2020幎以来、私はYandex.Translatorモバむル開発グルヌプを率いおいたす。 Translatorアプリは、テキストを操䜜するための単なるアプリケヌションではなくなりたした。写真の翻蚳、ダむアログモヌド、音声入力、音声操䜜など、すばらしい機胜がたくさんありたす。



iOSでサりンドを操䜜するずいうトピックに飛び蟌み始めたばかりですが、オヌディオセッション、合成、音声認識の操䜜を含むコンパクトな資料は芋぀かりたせんでした。だから私はこの話をするこずにしたした。







それは4぀の郚分になりたす。最初に、オヌディオセッションずは䜕か、オヌディオセッションを正しく操䜜する方法、アプリケヌションの動䜜にどのように圱響するかに぀いお説明したす。次に、音声合成に移りたしょう。電話で数行のコヌドで人々にテキストを音声で䌝える方法を考えおみたしょう。次に、音声認識に切り替えたす。そしお結論ずしお、これらすべおの可胜性をオフラむンモヌドでナヌザヌに提䟛する方法ず、それが持぀機胜を芋おみたしょう。







音声挔技ず音声認識を䜿甚するためのかなりの数のオプションがありたす。私のお気に入りは、他の人の音声メッセヌゞをテキストに倉換するこずです。そしお、たずえば、Yandex.Messengerチヌムがそのような機胜を䜜成しおくれおうれしいです。うたくいけば、他のメッセンゞャヌが远い぀いお、家でもそれをするでしょう。



レポヌトの最初の郚分、これはAVAudioSessionにスムヌズに進んでいたす。







オヌディオセッションは、アプリケヌションずオペレヌティングシステムの間のレむダヌです。より正確には、アプリケヌションずサりンドを操䜜するためのハヌドりェアスピヌカヌずマむクの間。 iOS、watchOS、およびtvOSでは、各アプリに事前構成されたデフォルトのオヌディオセッションがありたす。このプリセットはOSごずに異なりたす。



特にiOSに぀いお蚀えば、オヌディオセッションはデフォルトでオヌディオ再生をサポヌトしたすが、録音は犁止したす。サむレントモヌドのスむッチが「サむレント」モヌドに蚭定されおいる堎合、アプリケヌション内のすべおのサりンドが完党にミュヌトされたす。そしお第3に、デバむスをロックするず、アプリケヌション内のすべおのサりンドの再生が停止したす。







オヌディオセッションの蚭定は、3぀のポむントで構成されおいたす。これは、カテゎリ、モヌド、および远加オプションの遞択です。それぞれのポむントを個別に芋おいきたす。



カテゎリから始めたしょう。カテゎリは、オヌディオセッションの基本的な動䜜の蚭定のセットです。カテゎリは、オペレヌティングシステムが可胜な限り䞀臎するこずを可胜にするパラメヌタのセットです。たずえば、このカテゎリの名前です。したがっお、Appleは、䜿甚可胜なカテゎリにできるだけ近いアプリケヌションのカテゎリを遞択するこずをお勧めしたす。珟圚、iOS13では6぀のカテゎリを利甚できたす。 7番目のカテゎリもありたすが、非掚奚ずしおマヌクされおいるため、䜿甚しないでください。



この講挔では、再生、録音、playAndRecordの3぀のカテゎリに぀いお説明したす。䞀郚のモヌドは特定のカテゎリでのみ䜿甚できるため、このモヌドでは、蚭定されたカテゎリの機胜を補足できたす。







たずえば、スラむドにはmoviePlaybackモヌドが衚瀺されおおり、Playbackカテゎリにのみ蚭定できたす。



moviePlaybackモヌドを蚭定するず、オヌディオセッションで、内蔵スピヌカヌずヘッドフォンの再生音質が自動的に向䞊したす。この講挔では、「デフォルト」モヌドのみを䜿甚したす。ただし、互換性のないカテゎリずモヌドのペアを䜿甚する堎合は、デフォルトのモヌドが䜿甚されるこずに泚意しおください。







3぀目は、オヌディオセッションのオプションであるポむント蚭定です。たずえば、アプリの音声ず他のアプリの音声の混合方法をカスタマむズしたり、音声セッションの適切な非アクティブ化を蚭定しお、アプリが音声で終了したこずを他のアプリが認識できるようにするこずができたす。







たず、再生のカテゎリ、぀たり再生の蚭定に぀いお芋おいきたす。これは音声のみのカテゎリの1぀です。蚭定されおいる堎合、オヌディオセッションをアクティブにするず、他のアプリケヌションからのオヌディオの再生などが䞭断されたす。



ミュヌトスむッチがミュヌトに蚭定されおいる堎合でも、オヌディオが再生されるこずも重芁です。



このカテゎリのバックグラりンド状態で再生するオプションもありたすが、このためには、アプリケヌションでオヌディオ、AirPlay、およびPicture inPictureを有効にする必芁がありたす。



スラむドに衚瀺されおいる2぀のオプションを怜蚎しおください。 1぀目はmixWithOthersです。このオプションを䜿甚しおオヌディオセッションをアクティブにするず、アプリケヌション内でのサりンド再生は、珟圚再生䞭のサりンド音楜などず1぀のボリュヌムレベルでミックスされたす。ただし、珟圚の再生よりも音量の点でサりンドを優先させたい堎合は、duckOthersオプションを䜿甚できたす。バックグラりンドで再生されるサりンドの音量を䞋げ、アプリケヌション内で再生されるサりンドが終了するず元に戻したす。



たずえば、これはナビゲヌションアプリケヌションで確認できたす。ルヌトアナりンスの堎合、珟圚聎いおいるものがミュヌトされ、アナりンスが再生されおから、すべおが元の状態に戻りたす。







マむクからの認識のためにオヌディオセッションを蚭定するオプションを考えおみたしょう。レコヌドカテゎリは、このカテゎリのオヌディオセッションがアプリケヌションでアクティブな間、再生䞭のすべおのオヌディオをミュヌトしたす。 Recordは、通話やアラヌムなどのシステムサりンドをミュヌトするこずはできたせん。䞀般に、優先床の高い暙準サりンドです。



allowBluetoothA2DPオプションを远加するこずもできたす。これにより、AirPodsなどのヘッドセットを䜿甚しお、マむクからのサりンドを録音し、マむクでサりンドを再生できたす。これには叀いオプションがあり、allowBluetoothず同じように聞こえたすが、音質が倧幅に䜎䞋したす。



以前は叀いオプションを䜿甚しおいたしたが、アプリケヌション内で再生および録音されたサりンドの品質に満足しおいないずいうナヌザヌからの苊情がありたした。オプションを倉曎し、すべおが良くなりたした。



音声認識ず音声合成の䞡方を同時に䜿甚する堎合は、playAndRecordカテゎリを䜿甚したす。次に、アクティブ化されたオヌディオセッション内で、サりンドの録音ず再生の䞡方を䜿甚できたす。



notifyOthersOnDeactivationオプションは個別に怜蚎する必芁がありたす。これは、オヌディオセッションをアクティブ化するためのメ゜ッドで䜿甚されたす。なぜそんなに重芁なのですか







このオプションでオヌディオセッションが非アクティブ化された堎合、他のアプリケヌションは、オヌディオセッションの䞭断が終了したこずを瀺すパラメヌタヌを含むAVAudioSessionInterruptionTypeEndedパラメヌタヌを含むAVAudioSessionInterruptionNotification IDを受け取り、䞭断される前に開始されたサりンドの操䜜を続行できたす。



このシナリオは、mixWithOthersオプションのないアプリケヌションで再生カテゎリを䜿甚する堎合に可胜です。そうしないず、別のアプリケヌションのサりンドが䞭断されず、オヌディオが別のアプリケヌションず単にミキシングされるためです。



このオプションを䜿甚しお倉曎を正しく凊理するこずで、アプリケヌションで䜜業するずきにナヌザヌに快適なナヌザヌ゚クスペリ゚ンスを提䟛できたす。







スラむドでは、オヌディオセッション内でアプリケヌションが別のアプリケヌションによっお䞭断されたずいう通知を適切に凊理する方法の䟋ず、䞭断が終了したずきの状況を確認できたす。぀たり、特定の通知をサブスクラむブしたす。おそらく、䞭断が開始されたずきず終了したずきの2぀のタむプがありたす。



前者の堎合は状態を保存でき、埌者の堎合は別のアプリケヌションによっお䞭断されたサりンドの再生を続行できたす。



これがどのように機胜するかの䟋を次に瀺したす。



ビデオは䟋が瀺されおいる瞬間から再生されたす。



この䟋では、音楜は別のアプリケヌション、぀たりVLCで再生され、アプリケヌション内で音声再生を開始したした。音楜が䞭断され、合成されたスピヌチが再生された埌、音楜は自動的に再生を再開したした。



すべおのアプリケヌションがサりンドが䞭断されたずきの状況を正しく凊理できるわけではないこずを指摘したいず思いたす。たずえば、人気のあるむンスタントメッセンゞャヌの䞭にはオヌディオの再生を再開しないものがありたす。







たずめたしょう。オヌディオセッションの原理を分析したした。アプリケヌションの芁件に合わせおオヌディオセッションを構成する可胜性を怜蚎し、ナヌザヌのオヌディオセッションを䟿利にアクティブ化および非アクティブ化する方法を孊びたした。



進め。スピヌチの合成。







スラむドは、音声合成プロセスに関係するクラスの図を瀺しおいたす。䞻なクラスは、AVSpeechSynthesiser、AVSpeechUtterance、およびAVSpeechSynthesisVoiceずその蚭定です。



これずは別に、リク゚スト党䜓のラむフサむクルに関する通知を受信できるAVSpeechSynthesizerDelegateがあるこずに泚意しおください。テキストのサりンドがサりンドを再生しおいるため、前述のAVAudioSessionはここでは暗黙の䟝存関係になりたす。



オヌディオセッションを蚭定しなくおも認識を芁求できたすが、プロダクションアプリケヌションでは、蚭定方法を理解するこずが重芁です。これに぀いおは前に話したした。







音声合成リク゚ストをすばやく行う方法の最短の䟋。 AVSpeechUtteranceクラスのオブゞェクトを䜜成する必芁がありたす。ここで、話したいテキスト、目的の音声、および蚀語を指定したす。音声の䜜成時に蚀語ロケヌルを指定しない堎合は、電話のデフォルトのロケヌルが䜿甚されたす。ただし、次のスラむドでは、音声の遞択ずその操䜜方法に぀いお説明したす。



次に、AVSpeechSynthesizerクラスのオブゞェクトを䜜成し、speakメ゜ッドを呌び出したす。すべお。その埌、テキストが合成されお再生され、結果が聞こえたす。



しかし実際には、これはほんの始たりに過ぎたせん。音声合成にはさらに倚くの可胜性がありたす。これに぀いおは、これから説明したす。







たず、音を受信するずきの速床を蚭定できたす。速床は、0から1の範囲の実数ずしお指定されたす。 rateプロパティを0から0.5の範囲に蚭定するず、実際のレヌトは0から1たで倉化したす。



レヌト倀を0.5から1の範囲に蚭定するず、レヌトは1Xから4Xの倀に比䟋しお倉化したす。



スピヌドで䜜業する方法の䟋。







AVFoundationには、定数AVSpeechUtteranceDefaultがありたす。これは実際には0.5であり、オヌディオ再生の通垞の速床に盞圓したす。



通垞の半分の速床を指定するこずもできたす。0.25の倀を指定する必芁がありたす。0.75を指定するず、速床は通垞の2.5倍になりたす。たた、䟿宜䞊、最小速床ず最倧速床の定数がありたす。



ここで、いく぀かの䟋を瀺したす。



ビデオは、䟋



が瀺されおいる瞬間から再生されたす。これは、MacintoshがAppleのプレれンテヌションで初めお自分の声で話しおいる䟋です。そしお、それは通垞の合成音声速床の䟋でした。





これは2倍遅いです。





これは2.5倍高速です。



これずは別に、最埌の行で、preUtteranceDelayプロパティずpostUtteranceDelayプロパティを匕き出したした。これは、サりンドの再生が開始されるたでの遅延ず、サりンドの再生が終了した埌の遅延です。アプリケヌションを他のアプリケヌションのサりンドずミックスし、しばらくするず音量を䞋げお結果が倱われる堎合に䜿甚するず䟿利です。その埌、もう少し埅っおから、別のアプリケヌションのボリュヌムが元の䜍眮に戻りたした。







次のパラメヌタである音声遞択を芋おみたしょう。音声合成の音声は、䞻にロケヌル、蚀語、品質によっお分けられたす。 AVFoundationは、AVSpeechSynthesisVoiceオブゞェクトを䜜成たたは取埗するためのいく぀かの方法を提䟛したす。 1぀目は音声IDによるものです。各音声には固有のIDがあり、SpeechVoice静的プロパティにアクセスするず、䜿甚可胜なすべおの音声のリストを芋぀けるこずができたす。このプロパティの取埗にはいく぀かの特城がありたすが、それらに぀いおさらに説明したす。



無効な識別子をコンストラクタヌに枡すず、コンストラクタヌは「no」を返すこずに泚意しおください。



2番目のオプションは、蚀語たたはロケヌルコヌドで取埗するこずです。たた、AppleはSiriの音声は利甚できないず蚀っおいたすが、これは完党に真実ではありたせん。䞀郚のデバむスでSiriで䜿甚されおいる䞀郚の音声のIDを取埗できたした。おそらくこれはバグです。



音声には、デフォルトず改善の2぀の品質がありたす。䞀郚のボむスに぀いおは、改善されたバヌゞョンをダりンロヌドできたす。これに぀いおは前のセクションで説明し、必芁なボむスをダりンロヌドする方法に぀いお説明したす。







特定の音声を遞択する方法の䟋。 1぀目は特定の識別子、2぀目は蚀語コヌドを瀺す行、3぀目は特定のロケヌルです。



ここで、同じテキストを異なるロケヌルでダビングする2぀の䟋を再生したいず思いたす。



ビデオは䟋が瀺されおいる瞬間から再生され



たす.2番目のオプションは、私にはロシアの発音に近いようです。







性別はiOS13にも登堎したした。たた、このプロパティはiOS 13以降でのみ䜿甚でき、iOS 13で远加された音声に察しおのみ機胜したす。したがっお、Genderはenumずしお蚭定され、Female、Male、Unspecifiedの3぀のプロパティがありたす。



私たちのアプリケヌションでは、テキストを読む声の性別を遞択できたす。叀い声に぀いおは、自分でリストを䜜成し、アプリケヌションに保存したした。システムがUnspecifiedを返す音声に぀いお、どの音声を男性ず芋なし、どの音声を女性ず芋なすかを分離したす。







iOS 13.1では、投祚のリストは最初の呌び出しで空のリストを返す堎合がありたす。解決策特定の秒数に1回、リスト党䜓を再ク゚リできたす。空ではなく戻っおきたら、ようやく最新の投祚リストを受け取ったず思いたす。



このバグはiOSの埌続のバヌゞョンで修正されおいたすが、アプリでこれが衚瀺されおも驚かないでください。



ドキュメントの調査䞭に遭遇した興味深い点は、静的プロパティAVSpeechSynthesisVoiceAlexIdentifierがありたす。たず、すべおのデバむスがこの識別子で音声を䜜成できるわけではないため、これは非垞に興味深い識別子です。第二に、なぜそれが別々に配眮されおいるのか私にはわかりたせん。第䞉に、この識別子を持぀音声を取埗した堎合、この音声には䞀意の異なるクラスがありたす。



同時に、フレヌムワヌクヘッダヌの調査では、有甚で興味深いものは䜕も埗られたせんでした。この識別子に関する情報を知っおいる堎合は、なぜそれが必芁なのか、なぜ衚瀺されたのか、教えおください。私はこの質問に察する答えを芋぀けるこずができたせんでした。







ここでは、ロケヌル、むンタヌフェむスの性別に基づいお音声を遞択する方法、および特定の蚀語で動䜜する音声の速床を指定する機胜を提䟛する方法の䟋を芋るこずができたす。







ラテン語に基づいお文字起こしを蚘録するための暙識のシステムに぀いお簡単に説明したす。声の挔技のためのテキストを䞎えるずき、あなたはその䞭の特定の単語の発音を指定するこずができたす。 iOSでは、これは特別なキヌを䜿甚しおNSAttributedStringを介しお行われたす。この発音の生成は、iOSデバむスの[アクセシビリティ]セクションで盎接利甚できたす。しかし、倧量の堎合、これは非垞に䞍䟿であるように思われ、他の方法で音声転写の生成を自動化できたす。



たずえば、これは単語の盞関関係ず発音の倧芏暡な蟞曞を持぀英語のリポゞトリです。







スラむドは、特定の単語の発音を1぀のロケヌルに眮き換える方法の䟋を瀺しおいたす。この堎合、それは| təˈmɑːtəʊ |、トマトです。



䟋



が瀺された瞬間からビデオが再生されたす。これで、属性を発音に蚭定するオプションずしないオプションが再生されたした。







党䜓ずしお、音声合成リク゚ストを䜜成する方法を怜蚎したした。声を扱うこずを孊びたした。遭遇する可胜性のあるバグの1぀に察する回避策を怜蚎し、音声文字倉換、その䜿甚方法を怜蚎したした。







音声認識に移りたしょう。iOSではSpeechず呌ばれるフレヌムワヌクの圢匏で衚瀺され、デバむス䞊で音声認識を行うこずができたす。



箄50の蚀語ず方蚀がサポヌトされおおり、iOS 10以降で利甚できたす。音声認識には通垞、むンタヌネット接続が必芁です。ただし、䞀郚のデバむスおよび䞀郚の蚀語では、認識はオフラむンで機胜したす。これに぀いおは、私の講挔の第4郚で説明したす。



音声認識は、マむクずオヌディオファむルの䞡方から利甚できたす。ナヌザヌにマむクからの音声を認識できるようにする堎合、ナヌザヌは2぀のアクセス蚱可を䞎える必芁がありたす。 1぀はマむクぞのアクセス甚で、もう1぀は圌のスピヌチが認識のためにAppleサヌバヌに送信されるずいう事実のためです。



残念ながら、オフラむン認識しか䜿甚できない堎合、この蚱可を芁求しないこずは䞍可胜です。ずにかくリク゚ストする必芁がありたす。







このリストは、AppleのWebサむトから取埗したものです。これらは、音声認識に䜿甚できる蚀語ずロケヌルです。しかし実際には、これは暙準のキヌボヌドでディクテヌションに䜿甚できる蚀語ずロケヌルのリストです。たた、内郚のSpeech Framework APIは、暙準キヌボヌドからのディクテヌションの実装を指したす。







開発者ずしおの音声認識は無料ですが、䜿甚制限がありたす。 1぀目は、1日あたりのデバむスずリク゚ストの制限です。 2぀目は、アプリケヌションの合蚈制限です。そしお第䞉に-あなたは最倧1分を認識するこずができたす。唯䞀の䟋倖はオフラむンモヌドです。その䞭で、長く録音されたオヌディオメッセヌゞの認識を行うこずができたす。



もちろん、Appleは制限に぀いお具䜓的な数倀を述べおいたせん。たた、WWDCレポヌトに蚘茉たたは蚘茉されおいるように、゚ラヌを凊理し、たずえばこれらの制限に頻繁にぶ぀かった堎合は、゚ラヌを曞き蟌む準備をする必芁がありたす。しかし、そのような問題はありたせん。ロシア語の堎合、音声認識゚ンゞンずしおSpeechKitを䜿甚したす。たた、ほずんどのナヌザヌはロシア語を話すため、制限に盎面しおいたせん。



たた、プラむバシヌに぀いおも必ず考えおください。デヌタパスワヌド、クレゞットカヌドデヌタに音声が䜜甚するこずを蚱可しないでください。機密情報や個人情報を認識できるようにしないでください。







スラむドでは、音声認識プロセスに関係するクラスの条件付き図を芋るこずができたす。合成ず同様に、認識の操䜜はオヌディオアむアンの操䜜であるため、ここでもAVAudioSessionは明瀺的な䟝存関係です。







サポヌト。サポヌトされおいるすべおのロケヌルのセットを取埗するには、supportedLocalesペヌゞプロパティにアクセスする必芁がありたす。特定のロケヌルのサポヌトは、通垞、そのロケヌルで音声認識が珟圚利甚可胜であるこずを保蚌するものではありたせん。たずえば、Appleサヌバヌぞの氞続的な接続が必芁になる堎合がありたす。



認識のロケヌルサポヌトは、iOSのキヌボヌドでのディクテヌションのロケヌルのリストず䞀臎したす。これが完党なリストです。特定のロケヌルを今すぐ凊理できるようにするには、isAvailableプロパティを䜿甚できたす。







iOSの音声認識では、合成ずは異なり、各蚀語にロケヌルの優先順䜍はありたせん。したがっお、すべおのロケヌルのリストから特定の蚀語の最初のロケヌルを取埗するず、最も人気のないロケヌルが存圚する可胜性がありたす。したがっお、Translatorの䞀郚の蚀語では、特定の蚀語の特定のロケヌルを優先したす。



たずえば、英語の堎合はen-USを䜿甚したす。ナヌザヌが初めお英語で䜕かを認識しようずするずきは、アメリカのロケヌルを䜿甚したす。







ファむルからの認識芁求。ここではすべおが簡単です。ファむルを取埗しおリンクし、䜿甚するロケヌルを瀺すSFSpeechRecognizerオブゞェクトを䜜成する必芁がありたす。珟時点で認識が可胜であるこずを確認しおください。ファむルパスを枡すコンストラクトを䜿甚しおSFSpeechURLRecognitionRequestを䜜成したす。そしお、認識タスクを開始したす。



その結果、認識゚ラヌたたは結果のいずれかを受け取りたす。結果にはisFinalプロパティがありたす。これは、この結果が最終的なものであり、さらに䜿甚できるこずを意味したす。







これはもう少し耇雑な䟋です-マむクからの認識の芁求。そのためには、マむクの操䜜を担圓するAVAudioEngineオブゞェクトも必芁です。これがどのように機胜するかに぀いおは詳しく説明したせん。必芁なカテゎリ.recordたたは.playRecordを蚭定したす。オヌディオセッションをオンにしたす。 AudioEngineを構成し、マむクからオヌディオバッファヌを受信するようにサブスクラむブしたす。それらを認識芁求に远加し、認識が完了したら、マむクを終了できたす。



䞀時的な認識結果の発行を担圓するshouldReportPartialResultsプロパティがtrueに蚭定されおいるこずは泚目に倀したす。オプションを芋おみたしょう。shouldReportPartialResultsフラグがある堎合ずない堎合のアプリケヌションの倖芳です。



ビデオは、䟋が瀺されおいる瞬間から再生されたす。



巊の䟋では、音に察するマむクの応答を残しお、音量を倉曎しおいたす。私が䜕かを蚀っおいるこずがわかりたす。しかし、私が話し終えるたで、あなたは䜕も芋えたせん。ナヌザヌが口述した結果を埗るには長い時間がかかりたす。



shouldReportPartialResultsをtrueに蚭定しお正しく凊理するず、ナヌザヌは話しおいるずきに自分が蚀っおいるこずを確認できたす。これは非垞に䟿利で、ディクテヌションの芳点からむンタヌフェむスを実行する正しい方法です。







これは、オヌディオセッションでの䜜業の凊理方法の䟋です。 Translatorの内郚では、䜜成したサりンドだけでなく、オヌディオセッションで䜕かを実行できる他のフレヌムワヌクも䜿甚したす。



たず、蚭定、カテゎリが必芁なものであるこずを確認するコントロヌラを䜜成したした。次に、オヌディオセッションを垞にオン/オフにする機胜を実行したせん。



察話モヌド、音声入力、ダビングが開発される前から、私たちはオヌディオセッションのオンずオフを切り替えおいたした。察話モヌドを䜜り始めたずき、これらのオンオフモヌドは、あなたが䜕かを蚀っおから声が出るたでの間に䜙分な遅延を远加するこずがわかりたした。







音声認識ク゚リの堎合、ヒント認識される音声のタむプを指定できたす。指定できない堎合もあれば、口述、怜玢、たたは簡単な確認の堎合もありたす。倚くの堎合、ナヌザヌが長いこずを蚀う堎合は、口述の方が適しおいたす。







iOS 13以降、オヌディオ分析を利甚できたす。スラむドは、認識された音声の結果ずしお取埗できるパラメヌタヌを瀺しおいたす。぀たり、結果ずしお、ナヌザヌが蚀ったこずだけでなく、ナヌザヌが蚀った声も受け取るこずになりたす。







私たちはこれに長い間こだわる぀もりはありたせん。これは、認識されたテキストの結果ずしお分析を取埗する方法の䟋です。







党䜓ずしお、音声認識のための音声フレヌムワヌクの機胜を研究し、音声認識のヒントを䞎える方法を孊び、分析の機胜をすばやく調べたした。



そしお最埌に重芁なのは、オフラむン䜜業です。私が最初に話したいのは、音声合成のためのオフラむン蚀語のリストです。ドキュメントのどこにも、オフラむンで䜜業するために音声を明瀺的にダりンロヌドする方法に぀いおの蚀及は芋぀かりたせんでした。レポヌトずドキュメントの䞡方で、これらの音声はダりンロヌドできるず曞かれおいたすが、曞かれおいたせん。



システムを怜玢したずころ、[蚭定]、[アクセシビリティ]セクション、[口頭コンテンツ]、[音声]の順に移動するず、最初に、䜿甚可胜な蚀語のリストが衚瀺されるこずがわかりたした。次に、特定の蚀語に切り替えるこずで、新しい音声をダりンロヌドできたす。



そしお、そのリストは、AVSpeechSynthesisVoice.speechVoicesがアプリケヌション内で返すものず明確に䞀臎したす。これは、ナヌザヌがテキストツヌスピヌチをオフラむンで䜿甚するために必芁な蚀語をダりンロヌドできるこずをナヌザヌに教えるこずができるこずを意味したす。







認識のためのオフラむン蚀語のリスト。ドキュメントのどこにも明瀺的に瀺されおいたせんが、さたざたなフォヌラムず私たちが遭遇したものから刀断するず、これはむンタヌネットにアクセスせずにオフラむンで䜜業できる蚀語ずロケヌルのリストです。



オフラむン認識は、A9チップ以前のデバむスで䜿甚できるこずに泚意しおください。







今、楜しい郚分が来たす。音声認識甚のオフラむン蚀語のリスト。合成ずは異なり、䞀般的に自分で蚀語を明瀺的にダりンロヌドする方法はありたせん。暙準キヌボヌドに蚀語を远加するず、その蚀語のオフラむンパッケヌゞをダりンロヌドできたす。残念ながら、これは決定論的ではありたせん。 [蚭定]> [䞀般]> [キヌボヌド]> [ディクテヌション]に移動したしょう。たずえば、スペむン語を远加したした。その埌、「ディクテヌション」の䞋に、これらの蚀語でディクテヌションが利甚できる可胜性があるずいう小さなヒントが衚瀺されたす。そこにスペむン語が登堎したした。



それから私は私たちのアプリケヌションに行き、むンタヌネットをオフにしたした、そしお私のスペむン語でのオフラむン認識がうたくいきたした。



残念ながら、これは間接的にしか圱響を受けたせん。唯䞀の方法は、暙準のキヌボヌドに蚀語を远加するこずです。ただし、これはオフラむン認識パッケヌゞがダりンロヌドされるこずを保蚌するものではありたせん。







iOSでは、電話でむンタヌネットにアクセスできる堎合でも、もちろん、認識が可胜な堎合は、デバむスの電源を入れお音声認識を行うこずができたす。



supportOnDeviceRecognitionプロパティがあり、iOS 13以降で䜿甚できたす。ただし、このプロパティは正しく機胜したせん。右䞋に゚ラヌのスクリヌンショットを瀺したした。バグは13.2でのみ修正されたした。プロパティは、最初の芁求で垞にfalseを返したす。 Appleによるず、数秒埌に正しい倀が返されたす。



さらに、このプロパティはfalseを䞎える可胜性がありたすが、同時にrequiresOnDeviceRecognitionフラグをtrueに蚭定するず正垞に機胜したす。これは、このテストフラグがfalseを返した堎合でも、認識がデバむス䞊で完党に機胜するこずを意味したす。



ここにはいく぀かの解決策があるかもしれたせん。たず、iOS13.2でのみオフラむン認識を行うこずができたす。次に、特定の秒数を遞択しお、このプロパティを再芁求し、ナヌザヌむンタヌフェむスを曎新できたす。そしお第䞉に、このプロパティを忘れるこずができたす。オフラむンで音声を認識しおみおください。゚ラヌが発生した堎合は、ナヌザヌに衚瀺しおください。







オフラむン音声合成パッケヌゞを明瀺的にダりンロヌドする方法を怜蚎し、iOSにオフラむン音声認識パッケヌゞをダりンロヌドさせる方法を芋぀けたした。



これで、音声の合成ず認識をアプリケヌションにすばやく远加する方法がわかりたした。私はすべおを持っおいたす、あなたの泚意に感謝したす。



All Articles