次の方法で共有


XSpeechSynthesizerEnumerateInstalledVoices

インストールされている音声を列挙し、各音声に対して callback でポイントされているメソッドを呼び出します。

構文

HRESULT XSpeechSynthesizerEnumerateInstalledVoices(  
         void* context,  
         XSpeechSynthesizerInstalledVoicesCallback* callback  
)  

パラメーター

context _In_opt_
型: void*

呼び出し元が呼び出し元固有のデータを回復できるようにコールバック関数に渡されるユーザー指定の変数。

callback _In_
型: XSpeechSynthesizerInstalledVoicesCallback*

インストールされている音声ごとに 1 回呼び出されるメソッドへのポインター。

戻り値

型: HRESULT

正常に実行された場合は S_OK が返され、それ以外の場合はエラー コードが返されます。 エラー コードの一覧については、「エラー コード」を参照してください。

解説

注意

この関数は、時間依存のスレッドで呼び出すのに安全ではありません。 詳細については、「時間依存のスレッド」を参照してください。

この関数は、デバイスにインストールされたスピーチ合成エンジン (音声) を列挙します。 この関数は、インストールされた音声ごとに callback で指定された XSpeechSynthesizerInstalledVoicesCallback コールバック関数を 1 回呼び出し、その音声に関する情報を含む XSpeechSynthesizerVoiceInformation 構造体を渡します。

次の例は、XSpeechSynthesizerEnumerateInstalledVoices 関数を呼び出して、デバイスにインストールされている音声を列挙する方法を示しています。 この例は、XSpeechSynthesizerInstalledVoicesCallback コールバック関数を呼び出して、(1) デバイスにインストールされた音声の数をカウントし、(2) インストールされた各音声に関する情報を XSpeechSynthesizerVoiceInformation 構造体からデバッガーに出力します。

int Game::CountInstalledVoices()
{
    HRESULT hr = S_OK;
    int* voiceCount = new int();
    // Call XSpeechSynthesizerEnumerateInstalledVoices with a callback function
    // defined as a lambda expression that increments the count of installed voices 
    // each time it's invoked, and outputs information about each voice to the 
    // debugger for display.
    hr = XSpeechSynthesizerEnumerateInstalledVoices(voiceCount,
        [](
            _In_ const XSpeechSynthesizerVoiceInformation* information,
            _In_ void* context
            ) -> bool 
        {
        // Increment and update the count of installed voices.
        int* voiceCount = (int*)context;
        *voiceCount = *voiceCount + 1;
        CopyMemory(context, voiceCount, sizeof(int));

        // Output information about the current installed voice
        // to the debugger for display.
        char buffer[1000];
        int bufferLen;
        bufferLen = sprintf(buffer, "(%s) %s - %s, %s\n",
            information->VoiceId,
            information->Description,
            information->Gender == XSpeechSynthesizerVoiceGender::Male ? "Male" : "Female",
            information->Language);
        OutputDebugStringA(buffer);
      
        // Continue iterating through installed voices.
        // If this was set to false, the calling function would stop
        // enumerating installed voices.
        return true;
        }
    );

    // Return the count of installed voices.
    return *voiceCount;
}

要件

ヘッダー: XSpeechSynthesizer.h

ライブラリ: xgameruntime.lib

サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体

関連項目

XAccessibility
XSpeechSynthesizerSetCustomVoice
XSpeechSynthesizer