2011-01-13 28 views
15

Tôi cần một API hoặc thư viện (tốt nhất là miễn phí) để chuyển đổi giọng nói/giọng nói qua micrô thành văn bản (chuỗi).Voice/Speech to text

Ngoài ra, tôi sẽ cần API hoặc thư viện có thể thực hiện chuyển văn bản thành giọng nói.

Tôi muốn sử dụng C# và .NET, nhưng các ngôn ngữ khác sẽ đủ.

Cảm ơn.

Trả lời

0

I'd like to use C# and .NET, but other languages will suffice. Kiểm tra này nếu bạn đang mở để C++Festival

0

Có một DLL BUILTIN trong mọi hệ điều hành Windows cho Text2Speach. Bạn sẽ tìm thấy các dll theo trong c: \ Programs \ Shared Folders \ Microsoft chia sẻ \ Speech \ sapi.dll (sAPI - speach api) - Tôi không hoàn toàn chắc chắn về con đường - nhưng dù sao bạn cũng có thể tìm kiếm sapi.dll.

Sau đó bạn có thể sử dụng đoạn mã sau

SpVoice oVoice = new SpVoice(); 
oVoice.Voice = oVoice.GetVoices("","").Item(0); // 0 indicating what kind of speaker you want 
oVoice.Volume = 50; 
oVoice.Speak("hello world", SpeechVoiceSpeakFlags.SVSFDefault); 
oVoice = null; 
+0

Đây là con đường cho Win7 C: \ Windows \ System32 \ Speech \ Common –

+0

Speech to Text ... không phải là cách khác xung quanh. –

+1

@RobHay "Ngoài ra, tôi sẽ cần một API hoặc thư viện có thể thực hiện chuyển văn bản thành giọng nói" vì vậy tôi nghĩ câu trả lời của tôi là - ít nhất - một phần chính xác. –

13

Bạn có thể sử dụng CMU Sphinx vì nó là giải pháp khá cởi mở và khả năng mở rộng và tôi nghĩ rằng nó có thể được sử dụng ở cả client và server side:

http://cmusphinx.sourceforge.net/

Nếu bạn đang tìm kiếm một giải pháp máy tính để bàn của Microsoft sau đó bạn có thể sử dụng SAPI:

http://msdn.microsoft.com/en-us/magazine/cc163663.aspx

Về phía server, bạn có thể sử dụng Microsoft Unified Communication, nhưng đừng xem xét việc cấp phép cũng như:

http://www.microsoft.com/uc/en/gb/default.aspx

Cập nhật:

chủ đề này cũng có một số tài liệu tham khảo tốt:

C# Speech Recognition - Is this what the user said?

+0

Chỉ câu trả lời được cập nhật với một liên kết khác. – ShahidAzim

+1

Bạn không cần UCS nếu bạn chỉ cần nhận dạng giọng nói trên Windows Server. Bạn có thể tải xuống Nền tảng Microsoft Speech miễn phí - http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1b1604d3-4f66-4241-9a21-90a294a5c9a4. –

+0

Tôi không biết về điều đó, cảm ơn bài đăng của bạn và có vẻ thú vị. – ShahidAzim

1

Xem Using c++ to call and use Windows Speech Recognition

Có nội dung:

Microsoft cung cấp công cụ nhận dạng giọng nói cho cả phiên bản máy khách và máy chủ của Windows. Cả hai có thể được lập trình với C++ hoặc với các ngôn ngữ .NET. API truyền thống để lập trình trong C++ được gọi là SAPI. Khuôn khổ .NET khuôn mẫu cho bài phát biểu của máy khách và máy chủ là System.Speech và Microsoft.Speech.

tài liệu SAPI - http://msdn.microsoft.com/en-us/library/ms723627(VS.85).aspx

.NET namespace để được công nhận là khách hàng System.Speech - http://msdn.microsoft.com/en-us/library/system.speech.recognition.aspx. Windows Vista và 7 bao gồm công cụ giọng nói.

Không gian tên .NET để nhận dạng máy chủ là Microsoft.Speech và SDK hoàn chỉnh cho phiên bản 10.2 có sẵn tại http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1b1604d3-4f66-4241-9a21-90a294a5c9a4. Công cụ phát biểu là bản tải xuống miễn phí.

Rất nhiều câu hỏi trước đã giải quyết vấn đề này. Xem Prototype based on speech recognition, getting started with speech recognition and speech synthesisSAPI and Windows 7 Problem để biết ví dụ.

1

Để chuyển đổi văn bản thành giọng nói, bạn phải thực hiện theo 3 bước:

1.Thêm tham chiếu System.Speech.

2.Thêm tiêu đề:

using System.Speech;

using System.Speech.Synthesis;

3.Thêm mã sau vào nơi textBox1 là tên mặc định của hộp văn bản.

  SpeechSynthesizer speaker = new SpeechSynthesizer(); 
      speaker.Rate = 1; 
      speaker.Volume = 100; 
      speaker.Speak(textBox1.Text); 
+0

hoạt động hoàn hảo, đây phải là một câu trả lời được chấp nhận;) – hdoghmen

+3

Trừ khi nó đi theo hướng ngược lại từ câu hỏi; thay vì lời nói thành văn bản, điều này cho thấy chuyển văn bản thành giọng nói. –

9

Đây là một ví dụ hoàn chỉnh sử dụng C# và System.Speech để chuyển đổi từ lời nói sang văn bản

Mã này có thể được chia thành 2 phần chính:

cấu hình đối tượng SpeechRecognitionEngine (và nó đòi hỏi các yếu tố) xử lý các sự kiện SpeechRecognized và SpeechHypothesized.

Bước 1: Cấu hình SpeechRecognitionEngine

_speechRecognitionEngine = new SpeechRecognitionEngine(); 
_speechRecognitionEngine.SetInputToDefaultAudioDevice(); 
_dictationGrammar = new DictationGrammar(); 
_speechRecognitionEngine.LoadGrammar(_dictationGrammar); 
_speechRecognitionEngine.RecognizeAsync(RecognizeMode.Multiple); 

Tại thời điểm này đối tượng của bạn đã sẵn sàng để bắt đầu sao chép âm thanh từ microphone. Bạn cần phải xử lý một số sự kiện, để thực sự có được quyền truy cập vào các kết quả.

Bước 2: Xử lý các SpeechRecognitionEngine Sự kiện

_speechRecognitionEngine.SpeechRecognized - = new EventHandler (SpeechRecognized); _speechRecognitionEngine.SpeechHypothesized - = new EventHandler (SpeechHypothesizing);

_speechRecognitionEngine.SpeechRecognized + = new EventHandler (SpeechRecognized); _speechRecognitionEngine.SpeechHypothesized + = new EventHandler (SpeechHypothesizing);

private void SpeechHypothesizing (object sender, SpeechHypothesizedEventArgs e) { /// thời gian thực kết quả từ động cơ chuỗi realTimeResults = e.Result.Text; }

private void SpeechRecognized (object sender, SpeechRecognizedEventArgs e) { câu trả lời cuối cùng từ /// chuỗi cơ finalAnswer = e.Result.Text; }

Đó là nó. Nếu bạn muốn sử dụng tệp .wav được ghi trước thay vì micrô, bạn sẽ sử dụng

_speechRecognitionEngine.SetInputToWaveFile (pathToTargetWavFile);

thay vì

_speechRecognitionEngine.SetInputToDefaultAudioDevice();

Có nhiều tùy chọn khác nhau trong các lớp này và chúng đáng khám phá chi tiết hơn.

http://ellismis.com/2012/03/17/converting-or-transcribing-audio-to-text-using-c-and-net-system-speech/

+0

chúng ta có thể sử dụng SpeechRecognitionEngine cho các ứng dụng Android bằng cách sử dụng MONO Framework ??? –

+0

Không. Cần một số Visual Studio cho điều đó. – bulltorious

+0

@bulltorious Không chính xác. Mono là một trình mô phỏng Linux cho .NET, vì vậy có, điều này sẽ làm việc với Mono. * Ngoài ra: Visual Studio là một IDE, không phải là ngôn ngữ lập trình. * – cybermonkey