15

Potrzebuję API lub biblioteki (najlepiej wolnej), która zamieni głos/mowę przez mikrofon, na tekst (ciąg znaków).Głos/mowa na tekst

Dodatkowo potrzebuję API lub biblioteki, która może wykonać konwersję tekstu na mowę.

Chciałbym użyć C# i .NET, ale wystarczą inne języki.

Dzięki.

Odpowiedz

0

I'd like to use C# and .NET, but other languages will suffice. Sprawdź to jeśli jesteś otwarty na C++Festival

0

Jest wbudowanych DLL w każdym systemie operacyjnym Windows dla Text2Speach. Dll znajduje się w katalogu c: \ Programs \ Shared Folders \ Microsoft Shared \ Speech \ sapi.dll (sAPI - speach api) - nie jestem do końca pewien co do ścieżki - ale w każdym razie możesz wyszukać plik sapi.dll.

Następnie można użyć następującego fragmentu kodu

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

To jest ścieżka dla Win7 C: \ Windows \ System32 \ Speech \ Common –

+0

mowy na tekst ... nie na odwrót. –

+1

@RobHay "Dodatkowo będę potrzebował API lub biblioteki, która może wykonywać konwersję tekstu", więc myślę, że moja odpowiedź jest - przynajmniej - częściowo poprawna. –

13

Można użyć CMU Sphinx, ponieważ jest dość otwarte i skalowalne rozwiązanie i myślę, że może on być stosowany zarówno na klienta i serwera strony:

http://cmusphinx.sourceforge.net/

Jeśli szukasz rozwiązania stacjonarnego Microsoft można użyć SAPI:

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

po stronie serwera, można użyć Microsoft Unified Communication, ale uważamy licencjonowania oraz:

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

Aktualizacja:

Ten wątek ma również pewne dobre referencje:

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

+0

Po prostu zaktualizowano odpowiedź za pomocą jeszcze jednego łącza. – ShahidAzim

+1

Nie potrzebujesz UCS, jeśli potrzebujesz tylko rozpoznawania mowy na Windows Server. Możesz pobrać bezpłatną platformę Microsoft Speech Platform - http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1b1604d3-4f66-4241-9a21-90a294a5c9a4. –

+0

Nie wiedziałem o tym, dziękuję za twój wpis i wygląda to interesująco. – ShahidAzim

1

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

który mówi:

Microsoft dostarcza silniki rozpoznawania mowy dla obu wersji klienta i serwera Windows. Oba mogą być programowane w C++ lub w językach .NET. Tradycyjny API do programowania w C++ jest znany jako SAPI. Nazwy ramowe .NET dla mowy klienta i serwera to System.Speech i Microsoft.Speech.

dokumentacja SAPI - http://msdn.microsoft.com/en-us/library/ms723627(VS.85).aspx

Przestrzeń nazw .NET dla uznania klienta jest System.Speech - http://msdn.microsoft.com/en-us/library/system.speech.recognition.aspx. Windows Vista i 7 zawierają silnik mowy.

Przestrzeń nazw .NET do rozpoznawania serwerów to Microsoft.Speech, a kompletny pakiet SDK dla wersji 10.2 jest dostępny pod adresem http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1b1604d3-4f66-4241-9a21-90a294a5c9a4. Silnik mowy jest do pobrania za darmo.

Wiele wcześniejszych pytań dotyczyło tego. Zobacz przykłady Prototype based on speech recognition, getting started with speech recognition and speech synthesis i SAPI and Windows 7 Problem.

1

Dla tekstu do konwersji mowy trzeba przestrzegać 3 etapy:

1.Add System.Speech odniesienia.

2.Dodaj nagłówki:

przy użyciu System.Speech;

przy użyciu System.Speech.Synthesis;

3.Dodaj następujący kod, w którym pole tekstowe Boks1 jest domyślną nazwą pola tekstowego.

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

działa doskonale, to powinna być akceptowana odpowiedź;) – hdoghmen

+3

Z tym, że zmierza w przeciwnym kierunku; zamiast zamiany tekstu na mowę wyświetla to zamiana tekstu na mowę. –

9

Oto cały przykład za pomocą C# i System.Speech do przetwarzania mowy na tekst

Kod może być podzielona na 2 części:

konfigurujących przedmiotu SpeechRecognitionEngine (oraz wymaganej elementy) obsługa zdarzeń SpeechRecognized i SpeechHypothesized.

Krok 1: Konfiguracja SpeechRecognitionEngine

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

W tym momencie Twój obiekt jest gotowy do zapisywania dźwięku z mikrofonu. Musisz jednak zająć się niektórymi zdarzeniami, aby faktycznie uzyskać dostęp do wyników.

Etap 2: obsługę zdarzeń SpeechRecognitionEngine

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

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

private void SpeechHypothesizing (object sender, SpeechHypothesizedEventArgs e) {/// wyniki w czasie rzeczywistym z silnika ciąg realTimeResults = e.Result.Text; }

private void SpeechRecognized (object sender, SpeechRecognizedEventArgs e) { /// ostateczna odpowiedź z ciągiem silnika finalAnswer = e.Result.Text; }

To wszystko. Jeśli chcesz użyć wstępnie nagrany plik .wav zamiast mikrofonu, należy użyć

_speechRecognitionEngine.SetInputToWaveFile (pathToTargetWavFile);

zamiast

_speechRecognitionEngine.SetInputToDefaultAudioDevice();

Istnieje kilka różnych opcji w tych klasach i warto je poznać bardziej szczegółowo.

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

+0

Czy możemy użyć SpeechRecognitionEngine dla aplikacji Androidowych korzystających z MONO Framework ??? –

+0

Nie. Potrzebujesz do tego Visual Studio. – bulltorious

+0

@bulltorious Niepoprawnie. Mono jest emulatorem Linuxa dla .NET, więc tak, to będzie działać z Mono. * Ponadto: Visual Studio to IDE, a nie język programowania. * – cybermonkey