TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Metoda
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zwraca najlepsze zgodne dane wyjściowe audio obsługiwane przez określoną odpowiedź aparatu syntezy na żądanie do aparatu syntezatora w celu obsługi określonego formatu danych wyjściowych.
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
- speakOutputFormat
- SpeakOutputFormat
Prawidłowy członek SpeakOutputFormat wyliczenia wskazujący typ żądanego formatu danych wyjściowych audio.
- targetWaveFormat
-
IntPtr
nativeint
Wskaźnik do ustawienia struct
zawierającego szczegóły dla typu formatu audio żądanego przez speakOutputFormat
argument .
-
IntPtr
nativeint
Zwraca prawidłowe wystąpienie IntPtr odwołujące się do struct
zawierającego szczegółowe informacje o formacie danych wyjściowych.
Przykładowa implementacja poniżej weryfikuje wybrane dane wejściowe, używając ich, jeśli są w tolerancjach, 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;
}
Struktura używana jako i zwracana przez metodę powinna być zgodna z dostępnymi w obszarze SAPI, a zwrócona wartość powinna zostać targetWaveFormat
WAVEFORMATEX
przydzielona przy użyciu metody CoTaskMemAlloc
.
Musi struct
zapewniać funkcje równoważne:
internal struct WaveFormat
{
public Int16 FormatTag;
public Int16 Channels;
public int SamplesPerSec;
public int AvgBytesPerSec;
public Int16 BlockAlign;
public Int16 BitsPerSample;
public Int16 Size;
}
Obiekt dziedziczący z powinien sprawdzić żądany format danych wyjściowych określony przez i zwrócić TtsEngineSsml targetWaveFormat
najbliższy format, który obsługuje.