2012-03-30 54 views
1

我一直試圖使用發現的Web應用程序大聲朗讀文本的程序here(http://www.ispeech.org/text.to.speech .demo.php)。這是一個演示文本到語音轉換程序,運行良好,速度相對較快。我想要做的是製作一個Python程序,將文本輸入到應用程序,然後輸出結果。在這種情況下,結果會很好。 Python有沒有辦法做到這一點,比如像一個圖書館?如果沒有,是否有可能通過其他方式做到這一點?我查看了iSpeech API(發現here),但唯一的問題是有免費使用的數量有限(我相信它是200)。雖然這個程序只是用了幾次,但我寧願能夠使用200次以上的服務。另外,如果這種解決方案不切實際,任何人都可以指導我走向另一個選擇?聆聽Web應用程序的輸出

@ AKX我目前正在使用eSpeak,它運作良好。它只是,聽起來不太好,很難說有時會說什麼。

+0

您的問題是關於如何使用python生成文本到語音 - >文件,或者是關於如何通過Web應用程序傳遞內容的問題?我不確定要回答的方法。 – jdi 2012-03-30 22:21:53

+0

有兩種方法可以實現這一點: 1.如何使用Python生成清晰的語音 或 2.使用Python來流式處理已完成此操作的Web應用程序的輸出。 – Xyene 2012-03-30 22:23:11

回答

2

好的。我找到了一個辦法,似乎很好。感謝所有幫助過的人!下面是我使用的代碼:

from urllib import quote_plus 

def speak(text): 
    import pydshow 
    words = text.split() 
    temp = [] 
    stuff = [] 
    while words: 
     temp.append(words.pop(0)) 
     if len(temp) == 24: 
      stuff.append(' '.join(temp)) 
      temp = [] 
    stuff.append(' '.join(temp)) 
    for i in stuff: 
     pydshow.PlayFileWait('http://api.ispeech.org/api/rest?apikey=8d1e2e5d3909929860aede288d6b974e&format=mp3&action=convert&voice=ukenglishmale&text='+quote_plus(i)) 

if __name__ == '__main__': 
     speak('Hello. This is a text-to speech test.') 

我覺得這是理想的,因爲它使用的API,但它使用的是用於演示程序的API密鑰。因此,它永遠不會耗盡。關鍵是8d1e2e5d3909929860aede288d6b974e

實際上,你可以在工作中測試這種沒有計劃,通過鍵入以下到您的地址欄:

http://api.ispeech.org/api/rest?apikey=8d1e2e5d3909929860aede288d6b974e&format=mp3&action=convert&voice=ukenglishmale&text= 

其次是你想說的文字。您還可以調整語言,在此情況下,將ukenglishmale更改爲iSpeech提供的其他內容。例如,ukenglishfemale。這會說同樣的文字,但以一種女性化的聲音。

注意:Pydshow是我的DirectShow封裝。你可以使用你的。

3

如果使用iSpeech不是必需的,有一個體面的(它肯定不是因爲美麗的鉸接儘可能多的商業解決方案)開放源代碼的文本到語音的解決方案可稱爲eSpeak

它可以從命令行(Python使用subprocess)或作爲共享庫使用。它似乎也有一個Python wrapper (python-espeak)它。

希望這會有所幫助。

+0

目前正在使用eSpeak,並且效果很好。它只是,聽起來不太好,很難說有時會說什麼。 – Xyene 2012-04-06 17:59:26

1

您的應用程序的流程是這樣的:

  1. 客戶端:用戶輸入文本轉換成表格,並提交表單服務器
  2. 服務器的請求:可能是Python或任何語言/框架你要。接收帶有文本的http請求。
  3. 服務器:運行純文本語音轉換爲純python庫或通過運行一個子進程到一個實用程序,可以生成語音爲wav/mp3/aiff /等
  4. 服務器:通過流文件發回HTTP響應MIME類型向客戶
  5. 客戶端:接收HTTP響應和播放內容

具體有關步驟3的...

我沒有上最善於表達的開源演講任何具體的提醒綜合軟件可用,但我可以說它沒有必須是純粹的蟒蛇,甚至是蟒蛇。大多數這些軟件包都有某種形式的命令行實用程序來獲取stdin或文件並生成一個音頻文件作爲輸出。您只需將此實用程序作爲子進程啓動即可生成該文件,然後將該文件傳回您的http響應中。

如果您決定使用現有的通過API(iSpeech)提供文本到語音的Web服務,則步驟3將替換爲向iSpeech發出您自己的服務器端http請求,接收響應,並將該響應轉發回原始客戶端請求,如代理。我想說的好處是無需維護您自己的語音合成解決方案或從開源獲得更高的質量......但缺點是您的響應時間可能會稍微延長一些,因爲您的服務器具有先製作自己的外部http請求並下載數據。