既知の問題
AndroidでのオーディオインプットCaveat
Androidデバイスでのオーディオキャプチャには、いくつかの既知の注意点があります。
マイク入力の共有動作は、Androidのバージョンと各アプリが使用するオーディオソースによって異なります。
詳細については、Androidプラットフォームのドキュメントを参照してください。
Android 9以前
Android 10より前では、一般的に先に開始したアプリがマイク入力を使用します。SORI SDKの音声認識が実行中の場合、他の通常アプリはマイクキャプチャを開始できないことがあります。逆に、他のアプリがすでに録音中の場合、SORI SDKがマイクを取得できないことがあります。
システム権限を持つ特権アプリ、たとえばアシスタントやアクセシビリティサービスは、この動作の例外になる場合があります。
Android 10以降
Android 10では、優先度ベースのオーディオ入力共有モデルが導入されました。このモデルでは、SORI SDKの認識が実行中でも別のアプリがオーディオキャプチャを開始できます。優先度の低いキャプチャは必ずしも停止せず、実行状態のまま無音を受け取ることがあります。
特に、別のアプリがCAMCORDERやVOICE_COMMUNICATIONなどのprivacy-sensitiveなオーディオソースを使用する場合に重要です。たとえば、SORI SDKの認識中にカメラアプリが動画録画を開始すると、カメラアプリはマイク音声を受け取り、SORI SDKは一時的に無音を受け取ることがあります。優先度の高いキャプチャが停止すると、AndroidはSORI SDKの認識を再起動せずに通常のマイク入力へ戻すことができます。
Android 10+の連続キャプチャを使用するSORI SDKバージョンでは、この遷移は通常のキャプチャ動作として扱われます。SORI SDKが無音を受け取っている間は認識結果が得られない場合があり、優先度の高いアプリがマイクを解放すると通常の入力で認識を再開できます。通常の認識に戻る前に短い復旧区間が発生することがあります。
SORI SDKは、フォアグラウンドサービスを使用することで、アプリが画面の最上部に表示されていない場合でも音声認識を続行できます。この場合、ユーザーは音声認識がまだ継続していることに気付かない可能性があります。音声認識を明確に停止する方法を提供することをお勧めします。
iOS での音声録音について
バックグラウンド認識
SORI SDKはバックグラウンド認識をサポートしています。オーディオレコーダーがバックグラウンドで実行できるように指定すれば、バックグラウンド認識も可能です。
プロジェクトのInfo.plistファイルに以下のキーと値を追加することで、バックグラウンド認識を使用できます。 以下のコードは例で、audioが重要な部分です。
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
<string>remote-notification</string>
<string>audio</string>
</array>TIP
すべての権限が必要なわけではありませんが、上記の3つの権限を持つことはSORI SDKの動作を妨げません。
バックグラウンド認識使用の副作用
SORI SDKは、音を聞くためにApple Audio Queue Systemを使用してマイクからPCMデータを取得します。システムや他のアプリと競合することなくオーディオレコーダーを使用するために、SORI SDKはAudio Session(AVAudioSession)を以下のように設定します。
- Category:
AVAudioSessionCategoryPlayAndRecord - Mode:
AVAudioSessionModeMeasurement - Options:
AVAudioSessionCategoryOptionMixWithOthers
ほとんどの状況で、上記のAudio Session設定は問題を引き起こしません。ただし、特定のアプリのAudio Session設定によっては、まれにSORI SDKまたは特定のアプリの動作に副作用が発生する場合があります。ほとんどの場合、副作用はスピーカーやイヤホンから音が出ないことです。
