TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Metoda
Definicja
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 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
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.