2012-04-06 31 views
7

Tôi hỏi câu hỏi này on SuperUser, nhưng nó rơi vào tai điếc. Hy vọng rằng tôi có thể có nhiều khán giả hơn ở đây.Phần mềm Text to Speech (TTS) cho Scripts WAV hoặc MP3 ouput

Tôi đang tìm giải pháp chi phí thấp (hoặc Miễn phí) như ScriptVox chỉ với một công cụ tốt hơn. Đó là, để đọc trong một kịch bản và gán ký tự cho giọng nói. Tôi đã đọc các bài viết here nhưng ngay cả với những người tôi đã phải ghép nối các tập tin wav. Nó không phải là tôi không yêu Audacity, nhưng nó là tốn thời gian. Tôi đang nghĩ đến việc viết bài của riêng mình, nhưng tôi chắc chắn phải có một giải pháp ngoài kia. Bất kỳ đề xuất?

+0

Bạn biết ngôn ngữ lập trình nào? – Brad

+0

Tôi đã hy vọng tìm thấy một cái gì đó đã được viết. Tôi là một con khỉ mã và đã được lập trình kể từ khi BASIC có số dòng. Tuy nhiên C# là những gì tôi được trả tiền để phát triển. – SQLMason

+1

xem bài đăng của tôi. Có một giải pháp VB mà bạn có thể dễ dàng thích ứng với .NET. Nếu bạn muốn một cái gì đó đã được viết, sau đó bạn sẽ muốn tìm nơi khác. Stack Overflow dành cho các câu hỏi lập trình. – Brad

Trả lời

3

Nếu có thể truy cập internet của chương trình, bạn có thể sử dụng iSpeech.

Bạn có thể sử dụng API của họ, nhưng tiếc là nó được giới hạn trong 200 lần sử dụng/ngày.

API của họ cũng cho phép thêm format=(wav|mp3) sau truy vấn, cho phép bạn phát âm thanh ở cả hai định dạng mong muốn.

+1

C# có thể truy cập DirectShow thông qua COM hoặc sử dụng thư viện .NET khác. – quantum

+0

Trả lời được chọn cho nó đầy đủ và nó là duy nhất đối với tôi (tôi biết công cụ chuyển văn bản thành giọng nói của Microsoft) – SQLMason

10

Tôi sẽ sử dụng động cơ của Microsoft Text-to-Speech. Họ có một ví dụ đơn giản về cách làm chính xác những gì bạn đang tìm kiếm:

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

Với mẫu mã, bạn có thể nói một số văn bản và có nó đổ vào một tập tin WAV. Từ đó, nếu bạn cần chuyển đổi sang định dạng như MP3, bạn có thể sử dụng FFMPEG.

5

Brad's answer là khá tuyệt vời, vì nó chứa chính xác những gì bạn đang tìm kiếm. Tuy nhiên, thiếu một nguyên tắc cơ bản bạn đã thể hiện sở thích trong câu hỏi errata: triển khai trong C#.

Here's a full tutorial để truy cập vào API giọng nói trong mã được quản lý. Với tín dụng đầy đủ để Blake Niemyjski và các đội bóng thích hợp tại Microsoft, đây là các bit nổi bật, bởi vì linkback đến bài viết gốc đã chết và điều này dường như được mượn từ Microsoft trực tiếp:

Các liên kết sau (Cho Máy tính một Tiếng nói) sẽ dẫn bạn tới trang web của của Microsoft sẽ chỉ cho bạn cách tạo dự án và nhận ứng dụng văn bản cơ bản để phát biểu và chạy trong VB .Net hoặc C# trong thời gian không !

SAPI

SAPI là API ngôn luận cho phép các ứng dụng truy cập vào bài phát biểu công nhận và (TTS) động cơ text-to-speech. Bài viết này tập trung vào TTS. Đối với TTS, SAPI lấy văn bản làm đầu vào và sử dụng công cụ TTS để xuất văn bản đó dưới dạng âm thanh nói. Đây là công nghệ tương tự được sử dụng bởi công cụ trợ năng của Windows, Người kể chuyện. Mọi phiên bản Windows vì XP đã được vận chuyển với SAPI và một công cụ TTS tiếng Anh.

TTS khiến tai của người dùng hoạt động. Nó cho phép ứng dụng gửi thông tin cho người dùng mà không cần đến mắt hoặc bàn tay của người dùng. Đây là một tùy chọn đầu ra rất mạnh mẽ, thường không được sử dụng trên các máy tính .

Ba bước cần thiết để sử dụng TTS trong một ứng dụng quản lý:

  1. Tạo một interop DLL

Kể từ SAPI là một thành phần COM, một DLL interop là cần thiết để sử dụng nó từ một ứng dụng được quản lý. Để tạo điều này, hãy mở dự án trong Visual Studio. Chọn menu Dự án và nhấp vào Thêm tham chiếu. Chọn tab COM, chọn "Microsoft Speech Object Library" trong danh sách và nhấp OK. Các bước này thêm tham chiếu này vào dự án của bạn và tạo một Interop.SpeechLib.dll trong cùng thư mục với tệp thi hành của bạn. Điều này interop DLL phải luôn luôn được trong cùng một thư mục như của bạn .exe để làm việc một cách chính xác.

  1. tham khảo không gian tên interop

Bao gồm namespace này trong ứng dụng của bạn. Trong C#, thêm "using SpeechLib;"; iIn VB, thêm "Nhập khẩu SpeechLib".

  1. gọi Nói()

Tạo một đối tượng SpVoice và gọi Nói():

Visual C#

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

Visual Basic

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

Tôi cảm thấy câu trả lời của Brad đã đưa tôi đến giải pháp đúng ở đây (do đó, anh ấy xứng đáng với tín dụng hơn tôi), nhưng đây sẽ là phần cuối cùng bạn bỏ lỡ. Bây giờ bạn có thể sao chép các tập tin WAV-file từ C++ solution trong mã được quản lý, và từ đó, transcode vào định dạng mong muốn của bạn.

Các vấn đề liên quan