python朗讀
1. 請教在python爬有道翻譯時候朗讀的問題
縮進問題...
可能是因為顯示紅色的elif上一行的if語句冒號後,並沒有可執行語句,如果你需要它什麼都不做,那麼pass可能是個好選擇,或者添加真正需要執行的東西,別什麼都不做。
翻譯一下錯誤信息吧,下次
2. 怎麼用python把有道翻譯的朗讀抓下來
notes = {
'a': QtGui.QSound("a.wav"),
}
notes['a'].play()
3. 實現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有所幫助。
4. 如何用python腳本啟動mac/terminal的朗讀功能
如果腳本中有相對路徑的操作,程序運行的時候結果會與預期相左。
解決辦法:
[plain] view plain
path = os.path.dirname(sys.argv[0])
os.chdir(path)
5. 如何用python控制電腦說話
電腦面前的你,是否也希望能讓電腦聽命於你? 當你累的時候,只需說一聲「我累了」,電腦就會放著優雅的輕音樂來讓你放鬆。 或許你希望你在百忙之中,能讓電腦郎讀最新的NBA比分賽況….一切都是那麼愜意。
在此告訴你,不要灰心,我們真的可以做一個。
做一個語音識別? 我相信很多人到這里會有兩個心態,一是好奇,二是避之千里。
其實不然,你可以不用懂太多的編程技能,你甚至也可以不用懂自然語言處理技術,這篇文章雖然實現了語音操控但是絕沒有你們想像的那麼復雜。 如果僅僅把語音識別作為一個實現了的介面的話,剩下的邏輯就僅僅是IF-ELSE這些簡單的元素了。
實現語音操控的原理
語音操控分為 語音識別和語音朗讀兩部分。
這兩部分本來是需要自然語言處理技能相關知識以及一系列極其復雜的演算法才能搞定,可是這篇文章將會跳過此處,如果你只是對演算法和自然語言學感興趣的話,就只有請您移步了,下面沒有一個字會講述到這些內容。
早在上世紀90年代的時候,IBM就推出了一款極為強大的語音識別系統-vio voice , 而其後相關產品層出不窮,不斷的進化和演變著。 我們這里將會使用SAPI實現語音模塊。
什麼是SAPI?
SAPI是微軟Speech API , 是微軟公司推出的語音介面,而細心的人會發現從WINXP開始,系統上就已經有語音識別的功能了,可是用武之地相當之少,他並沒有給出一些人性化的自定義方案,僅有的語音操控命令顯得相當雞脅。 那麼這篇文章的任務就是利用SAPI進行個性化的語音識別。
准備階段,你至少需要安裝以下的工具:
Python2.7 http://www.python.org/
強烈建詭使用2.7,至今Python2.7擁有Python系列為數最多的工具和應用支持,同時也相對比較穩定。
Win32Com http://starship.python.net/~skippy/win32/Downloads.html
Python Win32增強工具,可以使Python調用WIN32COM介面,這個工具的出現使得Python變得無比強大
Speech.py http://pypi.python.org/pypi/speech/
這個是極為精簡的封裝模塊,此處為可選項,當然我不建議重復造輪子,還是下吧,目前只支持Python2.6,但不用灰心,Python2.6和Python2.7的代碼是兼容,不會有異常。
安裝過程請依至上而下的順序。
開發階段
當你安裝了上述的相關工具後,你就可以進行開發了:
先進行一個簡單的環境調試:
復制代碼 代碼如下:
whileTrue:
phrase =speech.input()
speech.say("You said %s"%phrase)
ifphrase =="turn off":
break
上述代碼是啟動語音識別器,同時系統將會重復你所錄入的語音,當遇到「turn off」時,就會自動關閉識別系統。
6. python scratch區別
區別如下:
Scratch是圖形化編程,使用卡通積木塊堆疊完成編程,可以不熟悉鍵盤就能編程,好處是Scratch把所有底層細節都屏蔽掉了,讓編寫者專注於功能代碼的開發,怎麼寫都不報錯。
Python是一門真正的編程語言,應用領域廣泛,使用英文代碼進行編程,使用者需要有良好的英文水平,對鍵盤比較熟悉。
Scratch是麻省理工學院的「終身幼兒園團隊」開發的一種圖形化編程工具,主要面對全球青少年開放,是圖形化編程工具當中最廣為人知的一種形式。
截止到2021年已有1.4版、2.0版本(增加克隆積木,視頻偵測,Lego拓展積木)、3.0版本(增加文字朗讀、翻譯和Makey makey等選擇性下載擴展積木,並增加micro:bit和Lego mindstorms EV3拓展積木)、3.12.0版本、3.18.1版本、3.19.2版本、3.4版本、3.6版本、3.9版本。所有人都可以在任意版本中創作自己的程序。
7. python源碼解析這本書大家都看了么
1.話說,如果沒有一定的基礎,以及明確自己的目的。你就是神人,花1小時看完源碼,也都是沒有意義的。2.就像你如果只是去背單詞,看單詞表,都看完,但是不懂含義,也是沒價值的。3.應該清楚自己要做什麼。然後再去找合適的辦法,才是解決問題的正常思路。4.單獨回答你這個問題則是:從幾天,到幾個月,或者幾年具體多少天,取決於:你本身python的基礎想要實現什麼目的比如,對於python不熟悉,那可能有些人需要幾年,才能完全看懂源碼。當然,你要是把python源代碼當做單詞朗讀一樣,只是看一眼,那就是另說了。對於Python很熟悉的,只需要很快速的,看各種功能如何實現,找到對應的介面,研究對應的實現機制。則也是時間長短不同。
8. 這段python代碼看不懂
1.話說,如果沒有一定的基礎,以及明確自己的目的。你就是神人,花1小時看完源碼,也都是沒有意義的。2.就像你如果只是去背單詞,看單詞表,都看完,但是不懂含義,也是沒價值的。3.應該清楚自己要做什麼。然後再去找合適的辦法,才是解決問題的正常思路。4.單獨回答你這個問題則是:從幾天,到幾個月,或者幾年具體多少天,取決於:你本身python的基礎想要實現什麼目的比如,對於python不熟悉,那可能有些人需要幾年,才能完全看懂源碼。當然,你要是把python源代碼當做單詞朗讀一樣,只是看一眼,那就是另說了。對於Python很熟悉的,只需要很快速的,看各種功能如何實現,找到對應的介面,研究對應的實現機制。則也是時間長短不同。
9. python2.7 ocr 文本識別 怎麼弄的啊
《PandaOCR v2.7圖片文字識別》網路網盤資源免費下載:
鏈接: https://pan..com/s/1nsqG9Fs5lLED4mCe798Nfw
PandaOCR v2.7最新版是一款專注於OCR 文字識別的免費軟體,支持多功能 OCR 識別、即時翻譯和朗讀等。軟體的功能非常的多並且強大,能夠進行截圖內容識別,剪切OCR識別還有各種圖片內容識別,能夠幫助用戶非常快捷方便的將文本,圖紙或者圖片內的文字識別出來給用戶免費使用,這樣就不需要用戶去看著文字一個字一個字的手打出來,非常的節省用戶的工作時間。
10. Python實驗操作題,急急急
(1)with as f
(2)with as f i in range(10) f.write(str(i))
2.以追加的方式打開E:\aa.txt文件,任意寫入文字,以「end」作為結束標志。
with open(r'E:\aa.txt', 'a') as f:
for i in range(10):
f.write('任意字元')
3. 打開e:\aa.txt文件,並把該文件的內容復制到e:\bb.txt文件中去。
with open(r'e:\aa.txt') as f:
content = f.read()
with open(r'e:\bb.txt', 'a') as f:
f.write(content)