मैं कुछ सरल कोड टीटीएस का उपयोग कर एक लहर फ़ाइल पैदा करने और फिर इसे खेलने के लिए है:लंबाई
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();
}
}
सब कुछ ठीक काम कर रहा है, लेकिन मुझे पता है कि इससे पहले कि मैं लहर खेलने के लिए शुरू करना चाहता हूँ फ़ाइल के लिए कितनी देर तक चलेंगे। क्या इसकी गणना करने का कोई तरीका है, या यह कहीं उपलब्ध है?
यदि यह कहीं उपलब्ध है, तो इसकी गणना कैसे की जाती है? मुझे लगता है कि यह धारा में डेटा की मात्रा से संबंधित है, लेकिन कैसे?
इसी तरह के प्रश्न का उत्तर यहां दिया गया है http://stackoverflow.com/questions/82319/how-can-i-determine-the-length-of-a-wav-file-in-c –
कोई रास्ता नहीं होगा, कुछ भी नहीं होगा असंभव है। यह मुझे झुका हुआ है। अगर मैं कुछ भी लेकर आऊंगा, तो मैं जो पोस्ट करूंगा उसके साथ पोस्ट करूंगा - उस घटना पर मैं अपने पैरों के बीच अपनी पूंछ के साथ दूरी में चलेगा। – Gabe
जैसा कि लिंक किए गए आलेख में पोस्ट किया गया है, पहले ऐसा करने का कोई _reliable_ तरीका नहीं है, हालांकि Genti का समाधान आपके परिणामों को प्राप्त करने का एक अच्छा तरीका है। लंबाई गणना विवरण के लिए Genti के विवरण की टिप्पणियां देखें। – Gabe