TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt die am besten passende Audioausgabe zurück, die von einer Antwort die angegebene Synthetisier-Engine auf eine Anforderung an die Synthetisier-Engine für die Unterstützung eines bestimmten Ausgabeformats unterstützt wird.
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
Parameter
- speakOutputFormat
- SpeakOutputFormat
Gültiger Member der SpeakOutputFormat-Enumeration, der den Typ des angeforderten Audioausgabeformats angibt.
- targetWaveFormat
-
IntPtr
nativeint
Ein Zeiger auf struct
, das Detaileinstellung für den Audioformattyp enthält, der vom speakOutputFormat
-Argument angefordert wurde.
Gibt zurück
nativeint
Gibt eine gültige IntPtr-Instanz zurück, die auf ein struct
verweist, das ausführliche Informationen über das Ausgabeformat enthält.
Beispiele
Die folgende Beispielimplementierung überprüft ausgewählte Eingaben und verwendet sie, wenn sie sich innerhalb der Toleranzen befinden, andernfalls mit Standardwerten.
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;
}
Hinweise
Die als targetWaveFormat
und von der -Methode zurückgegebene Struktur sollte mit dem WAVEFORMATEX
unter SAPI verfügbaren kompatibel sein, und der zurückgegebene Wert sollte mithilfe CoTaskMemAlloc
von zugeordnet werden.
Die struct
muss Funktionen bereitstellen, die folgendes äquivalent sind:
internal struct WaveFormat
{
public Int16 FormatTag;
public Int16 Channels;
public int SamplesPerSec;
public int AvgBytesPerSec;
public Int16 BlockAlign;
public Int16 BitsPerSample;
public Int16 Size;
}
Hinweise für Ausführende
Ein Objekt, das von TtsEngineSsml erbt, sollte das angeforderte Ausgabeformat untersuchen, wie von targetWaveFormat
angegeben, und das nächste Format zurückgeben, das es unterstützt.