2012-06-04 7 views
17

मैं सी # में System.Speech की आवाज़ के लिंग और आयु को बदलना चाहता हूं। उदाहरण के लिए, 10 साल की एक लड़की लेकिन मुझे पैरामीटर समायोजित करने में मदद करने के लिए कोई आसान उदाहरण नहीं मिल रहा है।मैं ध्वनि सिंथेसाइज़र लिंग और उम्र सी # में कैसे बदल सकता हूं?

उत्तर

16

पहले, देखें जो आवाज आप SpeechSynthesizer वर्ग के GetInstalledVoices विधि गणना करके स्थापित किया है, और फिर उनमें से एक का चयन करने के SelectVoiceByHints का उपयोग करें:

using (SpeechSynthesizer synthesizer = new SpeechSynthesizer()) 
{ 
    // show installed voices 
    foreach (var v in synthesizer.GetInstalledVoices().Select(v => v.VoiceInfo)) 
    { 
     Console.WriteLine("Name:{0}, Gender:{1}, Age:{2}", 
      v.Description, v.Gender, v.Age); 
    } 

    // select male senior (if it exists) 
    synthesizer.SelectVoiceByHints(VoiceGender.Male, VoiceAge.Senior); 

    // select audio device 
    synthesizer.SetOutputToDefaultAudioDevice(); 

    // build and speak a prompt 
    PromptBuilder builder = new PromptBuilder(); 
    builder.AppendText("Found this on Stack Overflow."); 
    synthesizer.Speak(builder); 
} 
+0

यदि स्पीकर अभी तक एक औरत है, तो इसका मतलब है कि मेरे सिस्टम में पुरुष आवाज नहीं है, इसलिए मुझे इसे डाउनलोड करने की ज़रूरत है? –

+0

@ पाब्लो: यह सही है, हालांकि, आपको सच कहने के लिए, मुझे कोई संकेत नहीं है कि उन्हें कहां से डाउनलोड किया जाए। [यह एमएसडीएन पृष्ठ] (http://www.microsoft.com/en-us/download/details.aspx?id=27224) ऐसा लगता है कि इसमें कुछ अतिरिक्त आवाजें हैं, लेकिन मैंने कभी भी उनमें से किसी का भी उपयोग नहीं किया। – Groo

+0

ठीक है, ध्वनि गुणों को बदलें केवल एक प्रश्न है जो मैंने समय पहले किया था, क्योंकि मैं भाषण नामस्थान के बारे में और जानना चाहता हूं। अगर वास्तव में हहा फिर से धन्यवाद तो मैं छोटी लड़की की आवाज़ ढूंढूंगा –

8
+0

क्यों [Stackoverflow] (http: // http: //stackoverflow.com) नहीं है ** तरह ** बटन? :) –

+1

मुझे नहीं पता, लेकिन इसमें एक [+1] बटन है! : पी –

+0

हां, लेकिन मुझे समझ में नहीं आया –

0

ये उम्र और लिंग के किसी काम का नहीं वास्तव में है। यदि आपके विंडोज़ में कई आवाजें इंस्टॉल हैं, तो आप इन पैरामीटर द्वारा विशिष्ट आवाजों को कॉल कर सकते हैं। अन्यथा, यह बस नकली है!

1
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.Speech.Synthesis; // first import this package 

    namespace textToSpeech 
    { 
     public partial class home : Form 
     { 
      public string s = "pran"; // storing string (pran) to s 

      private void home_Load(object sender, EventArgs e) 
       { 
        speech(s); // calling the function with a string argument 
       } 

      private void speech(string args) // defining the function which will accept a string parameter 
       { 
        SpeechSynthesizer synthesizer = new SpeechSynthesizer(); 
        synthesizer.SelectVoiceByHints(VoiceGender.Male , VoiceAge.Adult); // to change VoiceGender and VoiceAge check out those links below 
        synthesizer.Volume = 100; // (0 - 100) 
        synthesizer.Rate = 0;  // (-10 - 10) 
        // Synchronous 
        synthesizer.Speak("Now I'm speaking, no other function'll work"); 
        // Asynchronous 
        synthesizer.SpeakAsync("Welcome" + args); // here args = pran 
       }  
     } 
    } 
  • यह क्योंकि जब "बोलो" "SpeakAsync" का उपयोग करने के बेहतर विकल्प हो जाएगा समारोह निष्पादित हो रहा है/अन्य समारोह में से कोई भी चल रहा है जब तक यह खत्म काम करेंगे यह काम (व्यक्तिगत रूप से सिफारिश की)
है

Change VoiceGender
Change VoiceAge

0

पहले आप ऐड संदर्भ का उपयोग करते हुए संदर्भ भाषण intialise की जरूरत है।

फिर बोलने के लिए एक ईवेंट हैंडलर बनाएं, फिर आप उस हैंडलर के अंदर पैरामीटर को संपादित कर सकते हैं।

हैंडलर में

जगह है जहाँ आप का उपयोग कर आवाज और उम्र को बदल सकते हैं

synthesizer.SelectVoiceByHints(VoiceGender.Male , VoiceAge.Adult); 
संबंधित मुद्दे