Compartir a través de


TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Método

Definición

Devuelve el mejor resultado de audio coincidente admitido por una respuesta del motor de síntesis dada a una solicitud para el motor de sintetizador de compatibilidad con un formato de salida determinado.

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

Parámetros

speakOutputFormat
SpeakOutputFormat

Miembro válido de la enumeración de SpeakOutputFormat que indica el tipo de formato solicitado de la salida de audio.

targetWaveFormat
IntPtr

nativeint

Un puntero a un struct que contiene el valor de detalle para el tipo de formato de audio solicitado por el argumento speakOutputFormat.

Devoluciones

IntPtr

nativeint

Devuelve una instancia de IntPtr válida que hace referencia a un struct que contiene información detallada sobre el formato de salida.

Ejemplos

La implementación de ejemplo siguiente valida las entradas seleccionadas, usándolos si están dentro de las tolerancias; de lo contrario, usa valores predeterminados.

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;  
}  

Comentarios

La estructura usada como y devuelta por el método debe ser compatible con la disponible en SAPI, y el valor devuelto targetWaveFormat WAVEFORMATEX debe asignarse mediante CoTaskMemAlloc .

debe struct proporcionar una funcionalidad equivalente 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;  
}  

Notas a los implementadores

El objeto que hereda de debe examinar el formato de salida solicitado según lo especificado por y devolver TtsEngineSsml el formato más cercano que targetWaveFormat admite.

Se aplica a