TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
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.