2012-04-06 3 views
7

Ich fragte diese Frage on SuperUser, aber es ist auf taube Ohren gefallen. Hoffentlich kann ich hier mehr Publikum erreichen.Text zu Sprache (TTS) Software für Scripts WAV oder MP3-Ausgabe

Ich suche eine kostengünstige (oder kostenlose) Lösung wie ScriptVox nur mit einem besseren Motor. Das heißt, ein Skript einzulesen und der Stimme Zeichen zuzuordnen. Ich habe den Beitrag here gelesen, aber selbst mit diesen würde ich WAV-Dateien verketten müssen. Es ist nicht so, dass ich Audacity nicht liebe, aber es ist zeitaufwendig. Ich denke schon halb darüber nach, mein eigenes zu schreiben, aber ich bin mir sicher, dass es da draußen eine Lösung geben muss. Irgendwelche Vorschläge?

+0

Welche Programmiersprachen kennen Sie? – Brad

+0

Ich hatte gehofft, etwas bereits geschrieben zu finden. Ich bin ein Code-Affe und habe programmiert, seit BASIC Zeilennummern hatte. C# ist jedoch, wofür ich bezahlt werde. – SQLMason

+1

sehe meinen Beitrag. Es gibt eine VB-Lösung, die Sie leicht an .NET anpassen können. Wenn Sie etwas bereits geschrieben haben wollen, dann werden Sie sich woanders umsehen wollen. Stack Overflow dient zur Programmierung von Fragen. – Brad

Antwort

3

Wenn das Programm Zugang Internet ist akzeptabel, dann könnten Sie iSpeech verwenden.

Sie können ihre API verwenden, aber leider ist es auf 200 Anwendungen/Tag beschränkt.

Ihre API ermöglicht auch das Anhängen von format=(wav|mp3) nach einer Abfrage, so dass Sie Ihren Sound in beiden gewünschten Formaten erhalten können.

+1

C# kann entweder über COM auf DirectShow zugreifen oder eine andere .NET-Bibliothek verwenden. – quantum

+0

Antwort gewählt für Vollständigkeit und es war einzigartig für mich (ich kenne Microsoft's Text-to-Speech-Engine) – SQLMason

10

Ich würde Motor Text-to-Speech verwenden Microsofts. Sie haben ein einfaches Beispiel dafür, wie genau das zu tun, was Sie suchen:

http://msdn.microsoft.com/en-us/library/ms717065(v=vs.85).aspx

Mit diesem Beispielcode können Sie einen Text sprechen und es in eine WAV-Datei gespeichert. Von dort aus, wenn Sie in ein Format wie MP3 konvertieren müssen, können Sie FFMPEG verwenden.

5

Brad's answer ist ziemlich grandios, da es genau das enthält, wonach Sie suchen. Jedoch, es fehlt ein Fundament, das Sie in den Fragenerrata eine Präferenz ausgedrückt hatten: eine Implementierung in C#.

Here's a full tutorial Zugriff auf die Sprach-API in verwaltetem Code. Mit vollem Kredit Blake Niemyjski und die zuständigen Teams bei Microsoft, ist hier die herausragenden Bits, da der Linkback zum Original-Artikel tot ist und dies scheint von Microsoft ausgeliehen wurde direkt:

Der folgende Link (Giving eines Computer Voice) führt Sie zu einer Microsoft-Website, die Ihnen zeigt, wie Sie ein Projekt erstellen und eine Basic-Text-to-Speech-Anwendung in VB.Net oder C# in no Zeit erhalten!

SAPI

SAPI ist die Sprach-API, die Anwendungen den Zugriff auf Spracherkennungs und Text-to-Speech (TTS) Motoren gibt. Dieser Artikel konzentriert sich auf TTS. Für TTS nimmt SAPI Text als Eingabe und verwendet die TTS-Engine zu geben Sie diesen Text als gesprochenen Audio aus. Dies ist die gleiche Technologie, die von Windows-Tool für die Barrierefreiheit, Erzähler. Jede Version von Windows seit XP wurde mit SAPI und einer englischen TTS-Engine ausgeliefert.

TTS bringt die Ohren des Benutzers zum Laufen. Es ermöglicht Anwendungen, Informationen an den Benutzer zu senden, ohne die Augen oder Hände des Benutzers zu benötigen. Dies ist eine sehr leistungsfähige Ausgabeoption, die nicht oft auf PCs verwendet wird.

Drei Schritte nötig sind, um TTS in einer verwalteten Anwendung zu verwenden:

  1. eine Interop-DLL erstellen

Da SAPI eine COM-Komponente ist, wird ein Interop-DLL es eine von zu verwenden benötigt verwaltete App Öffnen Sie das Projekt in Visual Studio, um das zu erstellen. Wählen Sie das Menü Projekt und klicken Sie auf Verweis hinzufügen. Wählen Sie die COM-Registerkarte, Wählen Sie "Microsoft Speech-Objektbibliothek" in der Liste, und klicken Sie auf OK. Diese Schritte fügen diesen Verweis Ihrem Projekt hinzu und erstellen eine Interop.SpeechLib.dll im selben Ordner wie Ihre ausführbare Datei. Diese Interop-DLL muss immer im selben Ordner wie Ihre .exe sein, um korrekt zu funktionieren.

  1. Referenz der Interop Namespace

diesen Namespace in Ihrer Anwendung einschließen. Fügen Sie in C# "using SpeechLib;" hinzu; Fügen Sie in VB "Imports SpeechLib" hinzu.

  1. Anruf Speak()

ein SpVoice Objekt erstellen und rufen Speak():

Visual C#

SpVoice voice = new SpVoice(); 
voice.Speak("Hello World!", SpeechVoiceSpeakFlags.SVSFDefault); 

Visual Basic

voice = New SpVoice 
voice.Speak("Hello World!", SpeechVoiceSpeakFlags.SVSFDefault) 

Ich fühle, dass Brads Antwort mich hier zur richtigen Lösung geführt hat (also verdient er mehr Kredit als ich), aber das sollte das letzte Stück sein, das du vermisst hast. Sie sollten nun in der Lage sein, die WAV-Datei von C++ solution in verwaltetem Code zu replizieren, und von dort aus transcode in Ihr gewünschtes Format.