Język

TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Metoda

Definicja

Zwraca najlepsze pasujące dane wyjściowe dźwięku obsługiwane przez daną odpowiedź aparatu syntezatora na żądanie do aparatu syntezatora w celu obsługi określonego formatu wyjściowego.

public:
 abstract IntPtr GetOutputFormat(System::Speech::Synthesis::TtsEngine::SpeakOutputFormat speakOutputFormat, IntPtr targetWaveFormat);
public abstract IntPtr GetOutputFormat(System.Speech.Synthesis.TtsEngine.SpeakOutputFormat speakOutputFormat, IntPtr targetWaveFormat);
abstract member GetOutputFormat : System.Speech.Synthesis.TtsEngine.SpeakOutputFormat * nativeint -> nativeint
Public MustOverride Function GetOutputFormat (speakOutputFormat As SpeakOutputFormat, targetWaveFormat As IntPtr) As IntPtr

Parametry

speakOutputFormat
SpeakOutputFormat

Prawidłowy element członkowski SpeakOutputFormat wyliczenia wskazujący typ żądanego formatu wyjściowego audio.

targetWaveFormat
IntPtr

nativeint

Wskaźnik do zawierającego struct ustawienie szczegółów dla typu formatu audio żądanego speakOutputFormat przez argument.

Zwraca

IntPtr

nativeint

Zwraca prawidłowe IntPtr wystąpienie odwołujące się do zawierającego struct szczegółowe informacje o formacie danych wyjściowych.

Przykłady

Poniższa przykładowa implementacja weryfikuje wybrane dane wejściowe, używając ich, jeśli znajdują się one w tolerancji, w przeciwnym razie przy użyciu wartości domyślnych.

public IntPtr GetOutputFormat(SpeakOutputFormat format, IntPtr targetWaveFormat) {
    WaveFormat waveFormat = new WaveFormat();
    WaveFormat rq=new WaveFormat();
    Marshal.PtrToStructure(targetWaveFormat,rq);

    waveFormat.AvgBytesPerSec = AvgBytesPerSec Min < rq.AvgBytesPerSec && rq.AvgBytesPerSec < AvgBytesPerSecMax? rq.AvgBytesPerSec : 3200;
    waveFormat.BitsPerSample = BitsPerSampleMin < rq.AvgBytesPerSec && rq.BitsPerSample < BitsPerSampleMax ? rq.AvgBytesPerSec : 3200; 16;
    waveFormat.BlockAlign = 2;
    waveFormat.Channels = 1;
    waveFormat.FormatTag = 1;
    waveFormat.SamplesPerSec = 16000;
    waveFormat.Size = 0;

    IntPtr wfx = Marshal.AllocCoTaskMem(Marshal.SizeOf(waveFormat));
    Marshal.StructureToPtr(waveFormat, wfx, false);

    //Console.WriteLine ("GetOutputFormat called");
    return wfx;
}
internal struct WaveFormat {
    public Int16 FormatTag;
    public Int16 Channels;
    public int SamplesPerSec;
    public int AvgBytesPerSec;
    public Int16 BlockAlign;
    public Int16 BitsPerSample;
    public Int16 Size;
}

Uwagi

Struktura używana jako targetWaveFormat i zwracana przez metodę powinna być zgodna z WAVEFORMATEX dostępnym elementem SAPI, a zwrócona wartość powinna zostać przydzielona przy użyciu metody CoTaskMemAlloc.

Element struct musi zapewniać funkcjonalność równoważną:

internal struct WaveFormat
{
    public Int16 FormatTag;
    public Int16 Channels;
    public int SamplesPerSec;
    public int AvgBytesPerSec;
    public Int16 BlockAlign;
    public Int16 BitsPerSample;
    public Int16 Size;
}

Notatki dotyczące implementowania

Obiekt dziedziczony z TtsEngineSsml powinien zbadać żądany format danych wyjściowych określony przez targetWaveFormat i zwrócić najbliższy format, który obsługuje.

Dotyczy