エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Windows Phone 8 の音声アプリにおけるエラーの処理

2014/06/18

音声認識機能を取り扱う場合、マネージ例外がときどき発生しますが、大部分の音声認識エラーは HResult 形式で返されます。デバッガーを使用すると、個々のエラー コードとエラーの説明を表示できます。また、コード内で try-catch ステートメントを使用して、是正措置を実行することができます。

このトピックは、音声認識に関連するエラーのリファレンスであり、HResult の情報と説明を含みます。特定のエラーについて調べる目的で利用する場合は、Ctrl + F を使用してページ内でエラー文字列またはコードを検索するのが最も速い方法です。

このトピックは、次のセクションで構成されています。

音声認識を使用する場合、処理する必要がある最も重要なエラーは、音声に関するプライバシー ポリシーのエラーです。アプリで音声認識を試行するたびに、プライバシー ポリシー ウィンドウが表示されます。プライバシー ポリシーについての同意が得られなかった場合は、それに応じてアプリでエラーを処理する必要があります。

次のコード例は、音声に関するプライバシー ポリシーのエラーを処理する方法の 1 つを示しています。この例では、MessageBox コントロールを表示し、プライバシー ポリシーへの同意をユーザーに求めます。

private async void Reco1_Click(object sender, RoutedEventArgs e)
{
    try
    {
        // Start speech recognition.
        SpeechRecognitionResult recoResult = await myRecognizer.RecognizeAsync();

        // Display the recognized text.
        displayText.Text = "You said: \n\n" + recoResult.Text;
    }

    // Catch errors related to the recognition operation.
    catch (Exception err)
    {
        // Define a variable that holds the error for the speech recognition privacy policy. 
        // This value maps to the SPERR_SPEECH_PRIVACY_POLICY_NOT_ACCEPTED error, 
        // as described in the Windows.Phone.Speech.Recognition error codes section later on.
        const int privacyPolicyHResult = unchecked((int)0x80045509);

        // Check whether the error is for the speech recognition privacy policy.
        if (err.HResult == privacyPolicyHResult)
        {
            MessageBox.Show("You will need to accept the speech privacy policy in order to use speech recognition in this app.");
        }
        else
        {
            // Handle other types of errors here.
        }
    }
}

次の表に、Windows.Phone.Speech.Recognition 名前空間のエラー コードを示します。

エラーとエラー コード

エラーの説明

SPERR_RECOERROR_NOSPEECH 0x80045501

認識処理中に音声が検出されませんでした。

SPERR_RECOERROR_NOMATCH 0x80045502

音声入力に一致する有効な文法がありませんでした。

SPERR_RECOERROR_NETWORK_TIMEOUT 0x80045503

ネットワーク接続がタイムアウトしました。

SPERR_RECOERROR_NETWORK_UNAVAILABLE 0x80045504

ネットワーク接続を使用できません。

SPERR_GRAMMAR_DUP_NAME 0x80045505

文法セットに同じ名前の文法が複数あります。

SPERR_GRAMMARSET_CANT_ADD 0x80045506

文法セットに文法を追加できませんでした。

SPERR_GRAMMARSET_LOAD_CANCELED 0x80045507

文法セットに文法を読み込む処理がキャンセルされました。

SPERR_SYSTEM_CALL_INTERRUPTED 0x80045508

音声認識処理がシステム コールによって中止されました (例: 急なアプリ切り替え、通話の着信など)。

SPERR_SPEECH_PRIVACY_POLICY_NOT_ACCEPTED 0x80045509

電話で初めて音声認識の使用が試みられたとき、音声に関するプライバシー ポリシーに同意が得られませんでした。

SPERR_AUDIO_LIMIT_EXCEEDED 0x8004550A

音声入力を試みたオーディオが、サポートされる制限を超えています。

SPERR_NO_RULES_TO_ACTIVATE 0x8004550B

読み込み済みの文法にアクティブなルールがありません。

SPERR_WINRT_INTERNAL_ERROR 0x800455A0

開発者が対処不可能な一般的エラー。

SPERR_WINRT_ALREADY_IN_LEX 0x800455A1

追加する単語、発音、または POS ペアが既に辞書内に存在します。

SPERR_WINRT_NOT_IN_LEX 0x800455A2

単語が辞書内に存在しません。

SPERR_WINRT_RULE_NOT_DYNAMIC 0x800455A3

非ダイナミック ルールを変更しようとしました。

SPERR_WINRT_DUPLICATE_RULE_NAME 0x800455A4

ルール名が重複しています。

SPERR_WINRT_DUPLICATE_RESOURCE_NAME 0x800455A5

特定のルールに関してリソース名が重複しています。

SPERR_WINRT_TOO_MANY_GRAMMARS 0x800455A6

読み込まれた文法が多すぎます。

SPERR_WINRT_CIRCULAR_REFERENCE 0x800455A7

文法のインポート ルールに循環参照があります。

SPERR_WINRT_INVALID_IMPORT 0x800455A8

インポート済みの文法へのルール参照が解決できませんでした。

SPERR_WINRT_RULE_NAME_ID_CONFLICT 0x800455A9

ID (名前) は一致しても名前 (ID) の異なるルールが存在します。

SPERR_WINRT_NO_RULES 0x800455AA

文法にトップ レベルのルール、ダイナミック ルール、またはエクスポート済みルールが含まれていません。 アクティブ化することはできず、この文法のどのルールも使用できません。

SPERR_WINRT_CIRCULAR_RULE_REF 0x800455AB

ルール 'A' がルール 'B' を参照し、ルール 'B' がルール 'A' を参照しています。

SPERR_WINRT_NOT_DYNAMIC_GRAMMAR 0x800455AC

非ダイナミックな文法を操作しようとしました。

SPERR_WINRT_AMBIGUOUS_PROPERTY 0x800455AD

あいまいなプロパティを追加できません。

SPERR_WINRT_EXPORT_DYNAMIC_RULE 0x800455AE

エクスポート済みのルールは、直接的にも間接的にもダイナミック ルールを参照できません。

SPERR_WINRT_WORDFORMAT_ERROR 0x800455AF

単語の形式が不正です。おそらく不正な発音文字列が原因です。

SPERR_WINRT_LANGID_MISMATCH 0x800455B1

読み込もうとした CFG 文法の LANGID が、他の読み込み済みの文法とは異なります。

SPERR_WINRT_NO_WORD_PRONUNCIATION 0x800455B2

SR エンジンはこの単語を文法に追加できません。アプリケーションがこの単語の明示的な発音を提供しなければならない可能性があります。

SPERR_WINRT_SML_GENERATION_FAIL 0x800455B3

SML を生成できませんでした。たとえば、変換 xslt テンプレートの形式に問題があります。

SPERR_WINRT_ROOTRULE_ALREADY_DEFINED 0x800455B4

この文法には既にルート ルールがあります。別のルート ルールを定義しようとしても失敗します。

SPERR_WINRT_UNSUPPORTED_PHONEME 0x800455B5

不明な音素です。

SPERR_WINRT_PHONEME_CONVERSION 0x800455B6

指定した音標文字に音素を変換できません。

SPERR_WINRT_NO_RULES_TO_ACTIVATE 0x800455B7

この文法には、アクティブ化すべきルート ルールまたはトップ レベルのアクティブ ルールがありません。

SPERR_WINRT_LEX_INVALID_DATA 0x800455B8

辞書データが無効または破損しています。

SPERR_WINRT_CFG_INVALID_DATA 0x800455B9

CFG 文法のデータが無効または破損しています。

SPERR_WINRT_SISR_ATTRIBUTES_NOT_ALLOWED 0x800455BA

トップ レベルでは属性は認められません。

SPERR_WINRT_SISR_MIXED_NOT_ALLOWED 0x800455BB

トップ レベルでは混合コンテンツは認められません。

SPERR_WINRT_UNSUPPORTED_LANG 0x800455BC

要求された言語はサポートされていません。

SPERR_WINRT_STRING_TOO_LONG 0x800455BD

文字列が長すぎます。

SPERR_WINRT_STRING_EMPTY 0x800455BE

文字列を空にすることはできません。

SPERR_WINRT_NO_MORE_ITEMS 0x800455BF

項目を列挙するとき、要求されたインデックスが項目数を超過しています。

Windows.Phone.Speech.Recognition 名前空間のエラー コードに加えて、音声認識を操作しているときに次の例外が発生する可能性があります。

例外

説明

InvalidFormatException

音声認識エンジンによって参照される SRGS 文法ファイルの形式が無効です。

InvalidOperationException

操作は既に実行されています。

FileNotFoundException

音声認識エンジンによって参照される SRGS 文法ファイルが見つかりません。

UnauthorizedAccessException

音声認識に必要な機能が設定されていません。

SpeechRecognizerUIRecognizeWithUIAsync() メソッドを呼び出して音声認識を試みると、いくつかのエラーが発生する可能性があります。たとえば、電話の音声機能がアクティブであるために、音声認識を実行できない可能性があります。これらのエラーの完全な一覧については、SpeechRecognitionUIStatus 列挙体を参照してください。

次の表に、Windows.Phone.Speech.Synthesis 名前空間のエラー コードを示します。

エラー

エラー コード

説明

SPERR_SYSTEM_CALL_INTERRUPTED

0x80045508

音声認識処理がシステム コールによって中止されました (例: 急なアプリ切り替え、通話の着信など)。

SPERR_WINRT_INTERNAL_ERROR

0x800455A0

開発者が対処不可能な一般的エラー。

SPERR_WINRT_ALREADY_IN_LEX

0x800455A1

追加する単語、発音、または POS ペアが既に辞書内に存在します。

SPERR_WINRT_NOT_IN_LEX

0x800455A2

単語が辞書内に存在しません。

SPERR_WINRT_UNSUPPORTED_PHONEME

0x800455B5

不明な音素です。

SPERR_WINRT_PHONEME_CONVERSION

0x800455B6

指定した音標文字に音素を変換できません。

SPERR_WINRT_LEX_INVALID_DATA

0x800455B8

辞書データが無効または破損しています。

SPERR_WINRT_UNSUPPORTED_LANG

0x800455BC

要求された言語はサポートされていません。

SPERR_WINRT_STRING_TOO_LONG

0x800455BD

文字列が長すぎます。

SPERR_WINRT_STRING_EMPTY

0x800455BE

文字列を空にすることはできません。

SPERR_WINRT_NO_MORE_ITEMS

0x800455BF

項目を列挙するとき、要求されたインデックスが項目数を超過しています。

Windows.Phone.Speech.Synthesis 名前空間のエラー コードに加えて、音声合成を操作しているときに次の例外が発生する可能性があります。

例外

説明

InvalidFormatException

音声シンセサイザーによって参照される SSML プロンプト ファイルの形式が無効です。

InvalidOperationException

操作は既に実行されています。

FileNotFoundException

音声シンセサイザーによって参照される SSML プロンプト ファイルが見つかりません。

UnauthorizedAccessException

音声認識に必要な機能が設定されていません。

次の表に、Windows.Phone.Speech.VoiceCommands 名前空間のエラー コードを示します。これらのエラーの大部分は、音声コマンド定義 (VCD) ファイルのスキーマに関連しています。VCD ファイルの正しいスキーマについては、「Windows Phone 8 の音声コマンド要素と属性のリファレンス」を参照してください。

エラー

エラー コード

説明

SPERR_VC_EXPECTED_VOICE_COMMANDS_ELEMENT

0x80045550

VoiceCommands 要素の位置が xml 要素宣言の直後ではありません。

SPERR_VC_INVALID_VOICE_COMMANDS_ELEMENT

0x80045551

VoiceCommands 要素が無効です。

SPERR_VC_EXPECTED_XML_DECLARATION

0x80045552

VCD ファイルが xml 要素宣言で始まっていません。

SPERR_VC_INVALID_XML_ATTRIBUTES

0x80045553

xml 要素宣言に version 性と encoding 属性が含まれていません。

SPERR_VC_INVALID_XML_VERSION

0x80045554

xml 要素に \"1.0\" の version 属性がありません。

SPERR_VC_INVALID_XML_ENCODING

0x80045555

xml 要素に \"utf-8\" の encoding 属性がありません。

SPERR_VC_INVALID_NAMESPACE

0x80045556

VoiceCommands 要素に \"http//schemas.microsoft.com/voicecommands/1.0\" の名前空間 xmlns 属性がありません。

SPERR_VC_EXPECTED_COMMANDSET

0x80045557

VoiceCommands 要素が空です。

SPERR_VC_INVALID_COMMANDSET

0x80045558

VoiceCommands 要素に CommandSet 要素以外の内容が含まれています。

SPERR_VC_INVALID_COMMANDSET_ATTRIBUTES

0x80045559

CommandSet 要素が xmllang 属性を指定していないか、または CommandSet 要素内のいずれかの属性が無効です。

SPERR_VC_EXPECTED_PREFIX_OR_EXAMPLE

0x8004555A

CommandSet 要素が空です。

SPERR_VC_INVALID_PREFIX

0x8004555B

CommandPrefix 要素が無効です。

SPERR_VC_EXPECTED_COMMANDSET_EXAMPLE

0x8004555C

CommandSet 要素に Example 要素が含まれていません。

SPERR_VC_INVALID_COMMANDSET_EXAMPLE

0x8004555D

CommandSet 要素の Example 要素が無効です。

SPERR_VC_EXPECTED_COMMAND

0x8004555E

CommandSet 要素に Command 要素が含まれていません。

SPERR_VC_INVALID_COMMAND

0x8004555F

CommandSet 要素の Command 要素が無効です。

SPERR_VC_INVALID_COMMAND_ATTRIBUTES

0x80045560

Command 要素で Name 属性が指定されていないか、または Command 要素内のいずれかの属性が無効です。

SPERR_VC_EXPECTED_COMMAND_OR_PHRASELIST

0x80045561

CommandSet 要素に Command 要素または PhraseList 要素以外の内容が含まれています。

SPERR_VC_EXPECTED_COMMAND_EXAMPLE

0x80045562

Command 要素に Example 要素が含まれていません。

SPERR_VC_INVALID_COMMAND_EXAMPLE

0x80045563

Command 要素の Example 要素が無効です。

SPERR_VC_EXPECTED_LISTENFOR

0x80045564

Command 要素で ListenFor 要素が指定されていません。

SPERR_VC_INVALID_LISTENFOR

0x80045565

ListenFor 要素が無効です。

SPERR_VC_EXPECTED_FEEDBACK

0x80045566

Feedback 要素の位置が ListenFor 要素の直後ではありません。

SPERR_VC_INVALID_FEEDBACK

0x80045567

Feedback 要素が無効です。

SPERR_VC_EXPECTED_NAVIGATE

0x80045568

Navigate 要素の位置が Feedback 要素の直後ではありません。

SPERR_VC_INVALID_NAVIGATE

0x80045569

Navigate 要素が無効です。

SPERR_VC_INVALID_NAVIGATE_ATTRIBUTES

0x8004556A

Navigate 要素で指定されている属性が無効です。

SPERR_VC_EXPECTED_PHRASELIST

0x8004556B

CommandSet 要素に PhraseList 要素が含まれ、その後に PhraseList 要素以外のものが指定されています。

SPERR_VC_INVALID_PHRASELIST

0x8004556C

PhraseList 要素が無効です。

SPERR_VC_INVALID_PHRASELIST_ATTRIBUTES

0x8004556D

PhraseList 要素で Label 属性が指定されていないか、または PhraseList 要素内のいずれかの属性が無効です。

SPERR_VC_EXPECTED_PHRASELIST_ITEM

0x8004556E

PhraseList 要素に Item 要素以外の内容が含まれています。

SPERR_VC_INVALID_PHRASELIST_ITEM

0x8004556F

Item 要素が無効です。

SPERR_VC_TOO_MANY_PHRASELIST_ITEMS

0x80045570

Item 要素が多すぎます。

SPERR_VC_INVALID_NODE

0x80045571

この Xml ノードは想定されていません。

SPERR_VC_TOO_MANY_PHRASELISTS

0x80045572

PhraseList 要素が多すぎます。

SPERR_VC_UNEXPECTED_END_OF_FILE

0x80045573

VCD ファイルが予期せずに終了しました。

SPERR_VC_EXPECTED_END_OF_FILE

0x80045574

VCD ファイルが VoiceCommands 要素の終了タグの後で終了していません。

SPERR_VC_INVALID_STRING_LENGTH

0x80045575

VCD ファイル内の文字列が長すぎるか短すぎます。

SPERR_VC_INVALID_XML_DOCUMENT

0x80045576

VCD ファイルが無効な XML ファイルです。

SPERR_VC_INVALID_FEEDBACK_LABEL_NO_SEMANTICS

0x80045577

Feedback 要素で参照されている PhraseList 要素で、Disambiguate 属性が \"false\" に設定されています。

SPERR_VC_INVALID_PATTERN_REFERENCED_LABEL_NOT_FOUND

0x80045578

ListenFor 要素または Feedback 要素で Label 属性を使用して PhraseList 要素を参照していますが、その Label 属性は既存の PhraseList 要素にマッピングされていません。

SPERR_VC_INVALID_PHRASELIST_NEVER_USED

0x80045579

PhraseList 要素が定義されていますが、使用されていません。

SPERR_VC_INVALID_FEEDBACK_LABEL_NOT_IN_ALL_LISTENFORS

0x80045580

Feedback 要素で参照されている PhraseList 要素が、対応する Command 要素のすべての ListenFor 要素で参照されていません。

SPERR_VC_TOO_MANY_LISTENFORS

0x80045581

ListenFor 要素が多すぎます。

SPERR_VC_TOO_MANY_COMMANDSETS

0x80045582

CommandSet 要素が多すぎます。

SPERR_VC_TOO_MANY_COMMANDS

0x80045583

Command 要素が多すぎます。

SPERR_VC_INVALID_COMMANDSET_LANGUAGE

0x80045584

要求された language 属性値が CommandSet 要素に関してサポートされていません。

SPERR_VC_DUPLICATE_COMMANDSET_LANGUAGE

0x80045585

指定された language 属性値を持つ CommandSet 要素が既に存在します。

VCD ファイルの正しいスキーマについては、「Windows Phone 8 の音声コマンド要素と属性のリファレンス」を参照してください。

表示:
© 2014 Microsoft