Partager via


TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Méthode

Définition

Retourne la meilleure sortie audio correspondante prise en charge par une réponse de moteur de synthèse donnée à un moteur synthétiseur pour la prise en charge d'un format de sortie particulier.

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

Paramètres

speakOutputFormat
SpeakOutputFormat

Membre valide de l'énumération SpeakOutputFormat indiquant le type de format de sortie audio demandé.

targetWaveFormat
IntPtr

nativeint

Pointeur vers une struct contenant la configuration spécifique du type de format audio demandé par l'argument speakOutputFormat.

Retours

IntPtr

nativeint

Retourne une instance de IntPtr faisant référence à struct contenant des informations détaillées sur le format de sortie.

Exemples

L’exemple d’implémentation ci-dessous valide les entrées sélectionnées, en les utilisant si elles sont dans des tolérances, sinon en utilisant les valeurs par défaut.

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

Remarques

La structure utilisée en tant que targetWaveFormat et retournée par la méthode doit être compatible avec le WAVEFORMATEX disponible sous SAPI, et la valeur retournée doit être allouée à l’aide de CoTaskMemAlloc.

Le struct doit fournir des fonctionnalités équivalentes à :

internal struct WaveFormat  
{  
    public Int16 FormatTag;  
    public Int16 Channels;  
    public int SamplesPerSec;  
    public int AvgBytesPerSec;  
    public Int16 BlockAlign;  
    public Int16 BitsPerSample;  
    public Int16 Size;  
}  

Notes pour les responsables de l’implémentation

L’objet héritant de TtsEngineSsml doit examiner le format de sortie demandé tel que spécifié par targetWaveFormat et retourner le format le plus proche qu’il prend en charge.

S’applique à