TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Restituisce il migliore output audio corrispondente supportato da una determinata riposta di un motore di sintesi a una richiesta del motore sintetizzatore per il supporto di un particolare formato di output.
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
Parametri
- speakOutputFormat
- SpeakOutputFormat
Membro valido dell'enumerazione di SpeakOutputFormat che indica il tipo del formato di audio di output richiesto.
- targetWaveFormat
-
IntPtr
nativeint
Puntatore a un elemento struct
contenente l'impostazione di dettaglio per il tipo di formato audio richiesto dall'argomento speakOutputFormat
.
Restituisce
-
IntPtr
nativeint
Restituisce un'istanza di IntPtr valida che fa riferimento a un oggetto struct
contenente informazioni dettagliate sul formato di output.
Esempio
L'implementazione di esempio seguente convalida gli input selezionati, usandoli se sono all'interno delle tolleranze, in caso contrario usando i valori predefiniti.
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;
}
Commenti
La struttura utilizzata come e restituita dal metodo deve essere compatibile con l'oggetto disponibile in SAPI e il valore restituito targetWaveFormat
WAVEFORMATEX
deve essere allocato tramite CoTaskMemAlloc
.
Deve struct
fornire funzionalità equivalenti a:
internal struct WaveFormat
{
public Int16 FormatTag;
public Int16 Channels;
public int SamplesPerSec;
public int AvgBytesPerSec;
public Int16 BlockAlign;
public Int16 BitsPerSample;
public Int16 Size;
}
Note per gli implementatori
L'oggetto che eredita da deve esaminare il formato di output richiesto come specificato da e restituire TtsEngineSsml il formato più vicino targetWaveFormat
supportato.