2012-06-04 6 views

risposta

16

In primo luogo, verificare che voci avete installato enumerando il metodo della classe SpeechSynthesizerGetInstalledVoices, e quindi utilizzare SelectVoiceByHints per selezionare uno di loro:

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

Se chi parla è ancora una donna, significa che non ho la voce maschile nel mio sistema, quindi devo scaricarlo? –

+0

@Pablo: è corretto, anche se, a dir la verità, non ho idea di dove scaricarli. [Questa pagina MSDN] (http://www.microsoft.com/en-us/download/details.aspx?id=27224) sembra che abbia alcune voci aggiuntive, ma non ne ho mai usato nessuna. – Groo

+0

Ok, cambiare le proprietà della voce è solo una domanda che ho avuto tempo fa, perché voglio saperne di più sul namespace parlato. Vado a trovare una voce di bambina se esiste davvero hahah grazie ancora –

0

Questi età e il sesso è in realtà di alcuna utilità. Se hai molte voci installate nella tua finestra, puoi chiamare voci specifiche con questi parametri. Altrimenti, è semplicemente falso!

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 
       }  
     } 
    } 
  • Sarà meglio scelta di utilizzare "SpeakAsync" perché quando "parlare" la funzione è in esecuzione/nessuno di altra funzione in esecuzione funzionerà fino a quando finisce è un lavoro (personalmente consigliato)

Change VoiceGender
Change VoiceAge

0

prima è necessario intialise il discorso di riferimento utilizzando il riferimento aggiuntivo.

quindi creare un gestore eventi per la conversazione avviata, quindi è possibile modificare i parametri all'interno di quel gestore.

nel gestore è dove si può cambiare la voce e l'età utilizzando il

synthesizer.SelectVoiceByHints(VoiceGender.Male , VoiceAge.Adult); 
Problemi correlati