C# Dispose对象Speakasync到wav流
我的代码创建了一个power point演示文稿和三个音频文件。 我想知道演示文稿创建后这些音频文件的长度,因此我使用:C# Dispose对象Speakasync到wav流,c#,audio,C#,Audio,我的代码创建了一个power point演示文稿和三个音频文件。 我想知道演示文稿创建后这些音频文件的长度,因此我使用: double duration = 0; WindowsMediaPlayer wmp = new WindowsMediaPlayer(); IWMPMedia mediainfo = wmp.newMedia(file); duration = mediainfo.durati
double duration = 0;
WindowsMediaPlayer wmp = new WindowsMediaPlayer();
IWMPMedia mediainfo = wmp.newMedia(file);
duration = mediainfo.duration;
wmp.close();
return duration;
创建我使用的音频文件
public void CreateAudio(string text)
{
y++;
synth = new SpeechSynthesizer();
AudioStream = new FileStream(folder + @"\audio\a" + @y.ToString() + @".wav", FileMode.OpenOrCreate);
//synth.SpeakCompleted += new EventHandler<SpeakCompletedEventArgs>(synth)
synth.SetOutputToWaveStream(AudioStream);
synth.SpeakAsync(text);
}
private void synth_SpeakCompleted(object sender, SpeakCompletedEventArgs e)
{
synth.Dispose();
}
public void CreateAudio(字符串文本)
{
y++;
synth=新的语音合成器();
AudioStream=newfilestream(文件夹+@“\audio\a”++@y.ToString()++@.wav”,FileMode.OpenOrCreate);
//synth.SpeakCompleted+=新事件处理程序(synth)
synth.SetOutputToWaveStream(音频流);
合成语音同步(文本);
}
私有void synth_SpeakCompleted(对象发送方,SpeakCompletedEventArgs e)
{
synth.Dispose();
}
问题是,创建演示文稿后,只有最短的音频文件返回长度,其余文件返回0。
如果我手动检查,我会看到3个具有有效长度属性的音频文件,但由于某种原因,程序不会读取这些文件。
我处理synth的尝试没有改变任何事情,使用syth.speak也没有改变任何事情。因此,我肯定在使用和管理我的对象和内存时犯了严重错误,但我不知道是什么或在哪里
例如,如果我使用代码来检查用不同代码创建的音频文件的长度,它工作得很好,就在我创建音频文件并希望检查其长度时,出现了一些问题。您必须阅读该代码的备注部分。WMP太笨重了。这不是正确的方法,你问的问题是错误的。那么,在代码中刚刚创建这些文件之后,有什么更好、更简单的方法来检查这些文件的持续时间呢?你必须阅读。WMP太笨重了。这不是正确的方法,你问的问题是错误的。那么,在代码中创建这些文件之后,有什么更好、更简单的方法来检查这些文件的持续时间呢?