當前位置:首頁 » 編程語言 » python文本轉語音

python文本轉語音

發布時間: 2023-07-19 23:18:24

『壹』 如何利用python在pycharm上進行語音合成

pycharm 通過 Sftp 遠程編輯項目的配置

{這個相當於代碼同步,類似git上傳,同步後你可以在伺服器上直接運行上傳的代碼;這個配置好後,才能在pycharm遠程調試時候將代碼上傳到伺服器正確位置/正確路徑上}

打開pycharm,File -> Settings…( Ctrl + Alt + s ) -> Deployment
點擊 + 按鈕,添加一個

如果你發現你的運行配置中沒有 Django 相關的項,請在項目設置的 Django 中勾選 Enable Django Support。

運行配置的設置有兩點需要注意。Python Interpreter 需要選中之前建立的遠程解釋器。Path mappings 處,需要把本機的 manage.py 與 Linux 上的關聯起來,比如:

C:/Evolution/Python/django_website/manage.py <=> /home/onlyice/work/django_website/manage.py

這可能是 PyCharm 的 bug:在使用遠程解釋器後,PyCharm 並不會自動將 Django 運行配置中的 manage.py 文件定位到 Linux 上的那份,而是會嘗試使用下面的命令來啟動 Django 調試 Server:

/usr/bin/python2 manage.py C:/Evolution/Python/django_website/manage.py

自然就找不到文件了。所以使用了 Path mappings 作為一種 hack 手段來解決。
這時就可以打斷點調試啦

Trouble Shooting

Q: 點擊調試運行失敗,顯示 「Cant set remote tunneling」

A: 調試時 PyCharm 調用將 Python Debug Server (pydevd.py) 綁定在一個隨機埠上,再使用 SSH 的埠轉發將數據通過 SSH 埠轉到 Debug Server 去。需要檢查你的 sshd 配置 (默認是 /etc/ssh/sshd_config) 是否禁用了 TCP 轉發 (AllowTcpFowarding),這個配置默認是打開的。

皮皮blog

出錯問題

pycharm channel is not opened

pycharm不能同步deployment中設置的文件內容了,在remote host窗口中打開文件提示the file is identical to local但實際上完全不同,上傳多次才能成功,或者乾脆就提示channel is not opened。應該和sftp有關。

目前還沒找到具體原因,可能是伺服器問題,過會就自己好了。

也可能是pycharm的問題,或者系統的問題?希望解決的可以留言告知一下,謝謝!

[Can't Download From Remote Server via SFTP – JetBrains IntelliJ]

pandas出錯

pycharm console import pandas Backend Qt4Agg is interactive backend. Turning interactive mode on. : cannot connect to X server
import pandas : cannot connect to X server

重啟pycharm,或者也不知道怎麼了就好了,不報錯了。。。

運行出錯

ssh://[email protected]:22/home/piting/ENV/anaconda3/bin/python3 -u /home/piting/mine/python_workspace/Oth/Competition/TianChi/Regression.py
/home/piting/ENV/anaconda3/bin/python3: can't open file '/home/piting/mine/python_workspace/Oth/Competition/TianChi/Regression.py': [Errno 2] No such file or directory

點出remote host標簽,發現沒有這個目錄,目錄下也沒有這個文件

解決:

mkdir -p 代碼目錄

再在remote host中右鍵 》 upload here

ref: [PyCharmRemote Debugging指南]

[pycharm奇淫技巧]*

[使用Pycharm進行Python遠程開發]

[Deployment in PyCharm]

『貳』 實現python文本寫入word

准備
我測試使用的Python版本為2.7.10,如果你的版本是Python3.5的話,這里就不太適合了。

使用Speech API
原理
我們的想法是藉助微軟的語音介面,所以我們肯定是要進行調用 相關的介面。所以我們需要安裝pywin32來幫助我們完成這一個底層的交互。
示例代碼
import win32com.clientspeaker = win32com.client.Dispatch("SAPI.SpVoice")speaker.Speak("Hello, it works!")

小總結
是的,調用介面來實現語音功能就是這么簡單,但是我們不得不來聊一聊這種方式的缺點。
對中文支持的不夠好,僅僅是這一點,估計在中國沒幾個用它的了。
還有就是語速不能很好的控制
pyttsx方式
原理
pyttsx 是Python的一個關於文字轉語音方面的很不錯的庫。我們還可以藉助pyttsx來實現在線朗讀rfc文件或者本地文件等等,最為關鍵的是,它對中文支持的還是不錯的。
示例代碼
# coding:utf-8import sysreload(sys)sys.setdefaultencoding('utf8')# __author__ = '郭 璞'# __date__ = '2016/8/6'# __Desc__ = 文字轉語音輸出import pyttsxengine = pyttsx.init()engine.say('hello world')engine.say('你好,郭璞')engine.runAndWait()# 朗讀一次engine.endLoop()

小總結
使用pyttsx,我們可以藉助其強大的API來實現我們基本的業務需求。很酷吧。
pyttsx深入研究
做完上面的小實驗,你肯定會覺得怎麼這么不過癮呢?
別擔心,下面我們就一起走進pyttsx的世界,深入的研究一下其工作原理吧。
語音引擎工廠
類似於設計模式中的「工廠模式」,pyttsx通過初始化來獲取語音引擎。當我們第一次調用init操作的時候,會返回一個pyttsx的engine對象,再次調用的時候,如果存在engine對象實例,就會使用現有的,否則再重新創建一個。
pyttsx.init([driverName : string, debug : bool]) → pyttsx.Engine

從方法聲明上來看,第一個參數指定的是語音驅動的名稱,這個在底層適合操作系統密切相關的。如下:
1.drivename:由pyttsx.driver模塊根據操作系統類型來調用,默認使用當前操作系統可以使用的最好的驅動
sapi5 - SAPI5 on Windows

nsss - NSSpeechSynthesizer on Mac OS X

espeak - eSpeak on every other platform

2.debug: 這第二個參數是指定要不要以調試狀態輸出,建議開發階段設置為True
引擎介面
要想很好的運用一個庫,不了解其API是不行的。下面來看看pyttsx。engine.Engine的引擎API。
方法簽名 參數列表 返回值 簡單釋義
connect(topic : string, cb : callable) topic:要描述的事件名稱;cb:回調函數 → dict 在給定的topic上添加回調通知
disconnect(token : dict) token:回調失聯的返回標記 Void 結束連接
endLoop() None → None 簡單來說就是結束事件循環
getProperty(name : string) name有這些枚舉值「rate, vioce,vioces,volumn → object 獲取當前引擎實例的屬性值

setProperty(name : string) name有這些枚舉值「rate, vioce,vioces,volumn → object 設置當前引擎實例的屬性值
say(text : unicode, name : string) text:要進行朗讀的文本數據; name: 關聯發音人,一般用不到 → None 預設要朗讀的文本數據,這也是「萬事俱備,只欠東風」中的「萬事俱備」
runAndWait() None → None 這個方法就是「東風」了。當事件隊列中事件全部清空的時候返回
startLoop([useDriverLoop : bool]) useDriverLoop:是否啟用驅動循環 → None 開啟事件隊列
元數據音調
在pyttsx.voice.Voice中,處理合成器的發音。
age

發音人的年齡,默認為None
gender

以字元串為類型的發音人性別: male, female, or neutral.默認為None
id

關於Voice的字元串確認信息. 通過 pyttsx.engine.Engine.setPropertyValue()來設置活動發音簽名. 這個屬性總是被定義。
languages

發音支持的語言列表,如果沒有,則為一個空的列表。
name

發音人名稱,默認為None.
更多測試
朗讀文本
import pyttsxengine = pyttsx.init()engine.say('Sally sells seashells by the seashore.')engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()

事件監聽
import pyttsxdef onStart(name): print 'starting', namedef onWord(name, location, length): print 'word', name, location, lengthdef onEnd(name, completed): print 'finishing', name, completedengine = pyttsx.init()engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()

打斷發音
import pyttsxdef onWord(name, location, length): print 'word', name, location, length if location > 10: engine.stop()engine = pyttsx.init()engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()

更換發音人聲音
engine = pyttsx.init()voices = engine.getProperty('voices')for voice in voices: engine.setProperty('voice', voice.id) engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()

語速控制
engine = pyttsx.init()rate = engine.getProperty('rate')engine.setProperty('rate', rate+50)engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()

音量控制
engine = pyttsx.init()volume = engine.getProperty('volume')engine.setProperty('volume', volume-0.25)engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()

執行一個事件驅動循環
engine = pyttsx.init()def onStart(name): print 'starting', namedef onWord(name, location, length): print 'word', name, location, lengthdef onEnd(name, completed): print 'finishing', name, completed if name == 'fox': engine.say('What a lazy dog!', 'dog') elif name == 'dog': engine.endLoop()engine = pyttsx.init()engine.say('The quick brown fox jumped over the lazy dog.', 'fox')engine.startLoop()

使用一個外部的驅動循環
engine = pyttsx.init()engine.say('The quick brown fox jumped over the lazy dog.', 'fox')engin(www.alOnely.Com.Cn)e.startLoop(False)# engine.iterate() must be called inside externalLoop()externalLoop()engine.endLoop()

總結
以上就是Python如何實現文本轉語音的全部內容,看完了上面的講述,是不是感覺Python實現文本轉語音還是蠻簡單的?那麼,大家快來嘗試嘗試吧。希望本文對大家學習Python有所幫助。

『叄』 在編程speak功能中怎麼變聲音

在編程 speak 功能中變聲音可以使用音頻處理庫或語音合成引擎的 API 來實現。具體實現方法因使用的庫或引擎不同而異,一般來說需要通過 API 調用相關函數或介面,設置變聲參數,然後將文本轉鎮帶換成音頻輸出。以下是一些常用的音頻處理庫和語音合成引擎:

  • PyDub:一個基於 Python 的音頻處理庫,支持音頻剪輯、合並、混音、變速、變聲等功能。

  • FFmpeg:一個跨平台的開源音視頻處理工具,支持音頻剪輯、合並、格式轉換、變速、變聲等功能。

  • Microsoft Cognitive Services:微軟提供的一系御芹蘆列 AI 服務,包括語音轉文本、文本轉語音、情感分析等功能,可以通過 API 調用實現語音合成和變聲。

  • Google Cloud Text-to-Speech:Google 提供的雲端語音合成服務,可以通過 API 調用實現文本轉語音和變聲功能。

  • 需要注意的是,音頻處理和語音合成的質量和效果受多種因素影響,包括采樣率、位深度、聲道數、語音合成引擎的演算法等首派。因此在選擇庫或引擎時需要根據具體應用場景和需求進行綜合考慮和評估。

熱點內容
html5移動端源碼下載 發布:2025-02-08 06:20:45 瀏覽:147
外網訪問黑群暉 發布:2025-02-08 05:45:59 瀏覽:559
中央存儲伺服器公司地址 發布:2025-02-08 05:38:48 瀏覽:821
伺服器如何查詢表空間的文件路徑 發布:2025-02-08 05:38:00 瀏覽:162
宏基4741g哪個配置好 發布:2025-02-08 05:37:56 瀏覽:810
混合料運輸車的配置是如何計算的 發布:2025-02-08 05:31:35 瀏覽:293
android紅包插件 發布:2025-02-08 05:31:34 瀏覽:365
ea伺服器怎麼連接 發布:2025-02-08 05:16:45 瀏覽:463
更加密更改 發布:2025-02-08 05:15:20 瀏覽:786
倉儲資源配置都需要開展哪些任務 發布:2025-02-08 05:13:51 瀏覽:676