2011-02-12 12 views
11

मैं SSML और .NET SpeechSynthesizer (System.Speech.Synthesis)SpeechSynthesizer नेट नियंत्रण पिच

SpeechSynthesizer synthesizer = new SpeechSynthesizer(); 
PromptBuilder builder = new PromptBuilder(); 
builder.AppendSsml(@"C:\Users\me\Documents\ssml1.xml"); 
synthesizer.Speak(builder); 

ssml1.xml फ़ाइल की सामग्री के माध्यम से बोले गए लेख की पिच को बदलने के लिए कोशिश कर रहा हूँ है:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<ssml:speak version="1.0" 
xmlns:ssml="http://www.w3.org/2001/10/synthesis" 
xml:lang="en-US"> 
<ssml:sentence> 
Your order for <ssml:prosody pitch="+30%" rate="-90%" >8 books</ssml:prosody> 
will be shipped tomorrow. 
</ssml:sentence> 
</ssml:speak> 

दर में मान्यता प्राप्त है: "8 किताबें" बाकी की तुलना में बहुत धीमी speaken है, लेकिन कोई बात नहीं क्या मूल्य "पिच" के लिए सेट कर दिया जाता है, यह कोई फर्क नहीं पड़ता! अनुमति प्राप्त मान यहां पाया जा सकता:

http://www.w3.org/TR/speech-synthesis/#S3.2.4

Am मैं कुछ कमी या पिच सिर्फ माइक्रोसॉफ्ट वाक् इंजन द्वारा समर्थित नहीं बदल रहा है?

fritz

उत्तर

2

जबकि इंजन SsmlParserSystem.Speech द्वारा प्रयोग किया जाता ProcessProsody विधि में एक pitch विशेषता स्वीकार करता है, यह इसे संसाधित नहीं है।

यह केवल range, rate, volume और duration विशेषताएँ संसाधित करता है। यह भी contour पार्स करता है लेकिन (यकीन नहीं क्यों) range के रूप में संसाधित किया जाता है ...

संपादित: यदि आप वास्तव में एक SSML xml फ़ाइल से पाठ पढ़ने की जरूरत नहीं है, आप प्रोग्राम के पाठ बना सकते हैं।

builder.AppendSsml(@"C:\Users\me\Documents\ssml1.xml"); 

उपयोग

builder.Culture = CultureInfo.CreateSpecificCulture("en-US"); 
builder.StartVoice(builder.Culture); 
builder.StartSentence(); 

builder.AppendText("Your order for "); 

builder.StartStyle(new PromptStyle() { Emphasis = PromptEmphasis.Strong, Rate = PromptRate.ExtraSlow }); 
builder.AppendText("8 books"); 
builder.EndStyle(); 

builder.AppendText(" will be shipped tomorrow."); 

builder.EndSentence(); 
builder.EndVoice(); 
+0

मुझे आश्चर्य है कि किसी भी अन्य भाषण इंजन API कि .net के साथ प्रयोग किया जा सकता है और जो पिच आदेशों को संसाधित करता है तो करने के बजाय ? – fritz

+0

@fritz: कई .NET API नहीं हैं। कई मूल एपीआई हैं, हालांकि उनमें से कई "मुक्त" नहीं हैं। मैंने सफलता के साथ ** eSpeak ** (.NET नहीं) का उपयोग किया है - 'System.Speech' से बेहतर आउटपुट लेकिन यह एसएसएमएल अच्छी तरह से नहीं पढ़ा। –

+0

क्या .NET भाषण या किसी भी विकल्प के साथ गाना करने का कोई तरीका है? मैं एक एपीआई की तलाश में हूं जो नियंत्रण की तीन विशेषताओं का समर्थन करता है: 1) भाषण 2) सटीक स्थिर पिच 3) अवधि नियंत्रण। क्या वहां ऐसी कोई चीज है? मैं स्पष्ट रूप से एक संगीत संचालित संचालित एपीआई पसंद करते हैं। – Shimmy

संबंधित मुद्दे