TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) 方法

定义

返回对向合成器引擎请求支持特定输出格式的给定合成引擎响应支持的最佳匹配音频输出。

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

参数

speakOutputFormat
SpeakOutputFormat

指示请求的音频输出格式的类型 SpeakOutputFormat 枚举的有效成员。

targetWaveFormat
IntPtr

nativeint

指向音频格式类型中包含由 speakOutputFormat 参数请求的详细信息设置的 struct 的指针。

返回

IntPtr

nativeint

返回引用包含有关输出格式的详细信息 IntPtr 的有效 struct 实例。

示例

下面的示例实现验证所选输入,如果它们在容差范围内,则使用它们,否则使用默认值。

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

注解

方法用作 targetWaveFormat 和 返回的结构应与 WAVEFORMATEX SAPI 下可用的 兼容,并且应使用 CoTaskMemAlloc分配返回的值。

struct必须提供等效于以下功能:

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

实施者说明

TtsEngineSsml 继承的对象应检查所 targetWaveFormat 指定的请求输出格式,并返回它支持的最接近的格式。

适用于