Bazı basit bir kod TTS kullanarak bir dalga dosyası oluşturma ve sonra oynamaya vardır:Uzunluk
public void TestSpeech()
{
SpeechSynthesizer synth = new SpeechSynthesizer();
using (MemoryStream stream = new MemoryStream())
{
synth.SetOutputToWaveStream(stream);
synth.Speak("Hello world");
stream.Seek(0, SeekOrigin.Begin);
IWaveSource source = new WaveFileReader(stream);
EventWaitHandle waitHandle = new EventWaitHandle(false, EventResetMode.AutoReset);
var soundOut = new WasapiOut();
soundOut.Initialize(source);
soundOut.Stopped += (s, e) => waitHandle.Set();
soundOut.Play();
waitHandle.WaitOne();
soundOut.Dispose();
source.Dispose();
}
}
Her şey iyi çalışıyor, ama ben dalga çalmaya başlamadan önce bilmek istiyorum dosya ne kadar süre devam edecek. Bunu hesaplamanın bir yolu var mı, yoksa bir yerlerde mi mevcut?
Bir yerlerde kullanılabilir, nasıl hesaplanır? Akımdaki veri miktarıyla ilgili olduğunu düşünüyorum, ama nasıl? (this sample çıkarılan, mevcut pleybek pozisyonu ve süre here kullanılır)
CSCore:
benzer soru zaten burada cevaplandı http://stackoverflow.com/questions/82319/how-can-i-determine-the-length-of-a-wav-file-in-c –
Bir yolu olacak, hiçbir şey imkansız. Bu beni bağladım. Ben bir şey ile gelmek - ben bu olay ile gelip, ben ayaklarım arasında benim kuyruk ile mesafe içine yürüyeceğim. – Gabe
Bağlantılı makalede yayınlandığı gibi, daha önce _reliable_ yolu yoktur, ancak Genti'nin çözümü sonuçlarınızı elde etmenin iyi bir yoludur. Uzunluk hesaplama detayları için Genti'nin açıklamalarına bakınız. – Gabe