2009-06-08 29 views

Trả lời

11

Mã C# sau sử dụng không gian tên System.Speech trong khung .Net. Nó là cần thiết để tham khảo không gian tên trước khi sử dụng nó, bởi vì nó không được tự động tham chiếu bởi Visual Studio.

 SpeechSynthesizer ss = new SpeechSynthesizer(); 
     ss.Volume = 100; 
     ss.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Adult); 
     ss.SetOutputToWaveFile(@"C:\MyAudioFile.wav"); 
     ss.Speak("Hello World"); 

Tôi hy vọng điều này có liên quan và hữu ích.

+0

Xin chào, trước đó tôi cần nhập một số dll, vì System.Speech không có sẵn trong dự án của tôi mặc dù tôi đã thêm bằng cách sử dụng "using System.Speech". – Tarik

+0

@ Mackenzie: đây là một câu trả lời hay hơn tôi, vì nó sử dụng các lớp bản địa .net thay vì mucking xung quanh với COM. –

+1

@atarikg: Tham khảo lắp ráp System.Speech. –

3

Đây là từ một vài phút phát, vì vậy hãy để trống biểu tượng. Làm việc tốt cho tôi. Tôi đã nhận thấy rằng SpFileStream (mà không thực hiện IDisposable, do đó thử/cuối cùng) thích đường dẫn tuyệt đối đến tương đối. C#.

SpFileStream fs = null; 
    try 
    { 
     SpVoice voice = new SpVoice(); 
     fs = new SpFileStream(); 
     fs.Open(@"c:\hello.wav", SpeechStreamFileMode.SSFMCreateForWrite, false); 
     voice.AudioOutputStream = fs; 
     voice.Speak("Hello world.", SpeechVoiceSpeakFlags.SVSFDefault); 
    } 
    finally 
    { 
     if (fs != null) 
     { 
      fs.Close(); 
     } 
    } 
+1

Cảm ơn bạn đã nỗ lực. – Tarik

4

Và như tôi đã tìm thấy cho làm thế nào để thay đổi định dạng đầu ra, chúng tôi mã một cái gì đó như thế này:

SpeechAudioFormatInfo info = new SpeechAudioFormatInfo(6, AudioBitsPerSample.Sixteen, AudioChannel.Mono); 

//Same code comes here 

ss.SetOutputToWaveFile(@"C:\MyAudioFile.wav",info); 

Đó là khá dễ dàng và dễ hiểu.

Cool .net