TtsEngineSsml.GetOutputFormat(SpeakOutputFormat, IntPtr) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回对向合成器引擎请求支持特定输出格式的给定合成引擎响应支持的最佳匹配音频输出。
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
指定的请求输出格式,并返回它支持的最接近的格式。