Python:語音處理,實現線上朗讀RFC文件或本地文字檔案
本文主要講解如何使用python來實現將文字轉為語音,以一個小例子為例,寫了一下用pyTTS來朗讀本地方件或線上朗讀RFC文件,當然也可以修改一下,做成線上朗讀新聞之類的,另本來想實現一個讀中文小說的小程式,目前沒有發現對中文支援得非常好的,且是免費的語音處理引擎,只能使用TTS實現一個英文的了,就當是用來練習聽力了。
1、準備:
b. 下載SpeechSDK51:下載
c. 下載SpeechSDK51 patch,支援中文和日文,本例沒有使用,下載。
2、實現:
程式碼:
#!/usr/bin/env python # -*- coding: utf-8 -*- #程式說明:此程式實現了通過TTS將文字內容讀出來,提供了兩種方式,一種是讀本地文字檔案, #另一種方式為線上讀RFC文件,要屬入rfc編號,會將其內容逐行讀出來列印到終端,其中音量 #大小,語速,朗讀者可能過配置檔案來設定,測試了下基本還算清楚,發現免費的TTS引擎對中文 #的支援均不是很好,所以本程式暫時沒有處理對中文檔案的閱讀 import pyTTS import ConfigParser def read_local_file(tts): ''' Function:朗讀本地檔案 Input:TTS物件 Output: NONE Author: socrates Blog:http://blog.csdn.net/dyx1024 Date:2012-02-19 ''' #輸入要朗讀的文字檔名 file_name = raw_input("please input a text file name (for example: rfc4960.txt)").strip() try: fobj = open(file_name, 'r') except IOError, err: print('file open error: {0}'.format(err)) return else: #逐行輸出並朗讀的文字內容 for eachLine in fobj: print(eachLine) tts.Speak(eachLine) fobj.close() def read_online_rfc(tts): ''' Function:線上朗讀RFC文件 Input:TTS物件 Output: NONE Author: socrates Blog:http://blog.csdn.net/dyx1024 Date:2012-02-19 ''' import urllib #輸入要朗讀的RFC編號 rfc_id = raw_input("please input a rfc number (for example: 4960):") #開啟RCF文件 try: pager = urllib.urlopen("http://tools.ietf.org/rfc/rfc%s.txt" % rfc_id) except Exception, err: print("open url failed, ret = %s" % err.args[0]) return #逐行讀取 while True: if len(pager.readline()) == 0: break else: strtmp = pager.readline() print strtmp tts.Speak(strtmp) def Init_tts(): ''' Function:初始化TTS引擎 Input:NONE Output: NONE Author: socrates Blog:http://blog.csdn.net/dyx1024 Date:2012-02-19 ''' tts_config = ConfigParser.ConfigParser() #讀取TTS相關配置檔案 try: tts_config.readfp(open('tts_config.ini')) except ConfigParser.Error: print 'read tts_config.ini failed.' #建立TTS物件 tts = pyTTS.Create() #設定語速 tts.Rate = int(tts_config.get("ttsinfo", "TTS_READ_RATE")) #設定音量 tts.Volume = int(tts_config.get("ttsinfo", "TTS_READ_VOLUME")) #設定朗讀者 tts.SetVoiceByName(tts_config.get("ttsinfo", "TTS_READ_READER")) return tts def show_menu(): ''' Function:系統選單 Input:NONE Output: NONE Author: socrates Blog:http://blog.csdn.net/dyx1024 Date:2012-02-19 ''' prompt = ''' l. read local file. 2. read rfc online. 3. exit please input your choice (1 or 2): ''' command_name = {'1':read_local_file, '2':read_online_rfc} while True: while True: try: choice = raw_input(prompt).strip()[0] except (EOFError, KeyboardInterrupt, IndexError): choice = '3' if choice not in '123': print 'error input, try again' else: break if choice == '3': break command_name[choice](Init_tts()) if __name__ == '__main__': show_menu()
配置檔案tts_config.ini:
[ttsinfo]
TTS_READ_RATE=-2 ;語速,預設為0,大於0表示快,小於0表示慢
TTS_READ_VOLUME=100 ;音量,0-100之間
TTS_READ_READER=MSMike ;朗讀者,取值MSSam、MSMary、MSMike
測試一:
l. read local file. 2. read rfc online. 3. exit please input your choice (1 or 2): 1 please input a text file name (for example: rfc4960.txt)english.txt China says it condemns all acts of violence against innocent civilians BEIJING - China's negative vote on a draft resolution on Syria at the United Nations General Assembly on Thursday was consistent with China's independent foreign policy of peace and in the best interests of the Syrian situation, officials and experts said. China opposes armed intervention or forcing a so-called regime change in Syria, China's deputy permanent representative to the UN Wang Min said in explanatory remarks. "We condemn all acts of violence against innocent civilians and urge the government and all political factions of Syria to immediately and fully end all acts of violence, and quickly restore stability and the normal social order," Wang said.
測試二:<>標記對中的內容僅列印,不朗讀,各協議文件編號可從http://tools.ietf.org/rfc/中查詢。
l. read local file. 2. read rfc online. 3. exit please input your choice (1 or 2): 2 please input a rfc number (for example: 4960):330 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <head> <meta http-equiv="Content-Style-Type" content="text/css" /> <!-- JavaScript --> <script language="javascript1.1" src="/js/updated.js" type="text/javascript"></script> <link rel="icon" href="/ietf.ico" /> <title>IETF Tools</title> <style type="text/css" > /* HTML element styles */ background-color: white; padding: 0; } font-family: "Times New Roman", times, serif; margin: 0; h1 { font-size: 150%; } h4 { margin: 0.45em 0 0 0; } .menu form { margin: 0; } input.frugal,textarea.frugal { border-left: groove 2px #ccc;
此部落格上傳不了音訊檔案,有興趣的朋友可以自己執行一下收聽。
相關推薦
Python:語音處理,實現線上朗讀RFC文件或本地文字檔案
本文主要講解如何使用python來實現將文字轉為語音,以一個小例子為例,寫了一下用pyTTS來朗讀本地方件或線上朗讀RFC文件,當然也可以修改一下,做成線上朗讀新聞之類的,另本來想實現一個讀中文小說的小程式,目前沒有發現對中文支援得非常好的,且是免費的語音處理引擎,只能
Java 實現線上開啟 word 文件 併發處理
1. 需求 防止多個使用者同時開啟一個檔案,出現編輯儲存檔案相互覆蓋的問題。 2. 頁面程式碼 (1)web.xml <!-- PageOffice Begin --> <servlet> <servlet-name>poserver<
不帶插件 ,自己寫js,實現批量上傳文件及進度顯示
批量上傳 發的 xhr string () .cn tom 需要 pen 今天接受項目中要完成文件批量上傳文件而且還要顯示上傳進度,一開始覺得這個應該不是很麻煩,當我在做的時候遇到了很多問題,很頭疼啊。 不過看了別人寫的代碼,自己也測試過,發現網上好多都存在一些問題,並不是
python備份網站,並刪除指定日期文件
linu for mta led his times walk static sys #!/usr/bin/python# Filename: backup_ver1.pyimport osimport timeimport datetime# 1. The files a
Python中while,for循環及文件操作,函數,模塊等操作
文件操作 rand 提示 don close choice line 轉發 字典 此內容本人原創,拒絕商業用途及他人轉發,嚴厲打擊有以上行為,發現後追究法律責任。print內調用變量 >> print "tom is %d,jerry is %d&q
共享服務Samba,實現liunx與Windows文件共享
rec user 紅色 ima pan ron mct sam 系統 Samba服務程序 是一款SMB協議並有服務器和客戶端組成的開源文件共享軟件,實現了Linux 與Windows系統之間的文件共享 Samba的配置文件有太多註釋的東西,為了方便使用下面的命令,可以更
Java實現線上開啟word文件加蓋印章/蓋章/簽名功能
前言: 我們知道,大型一點的OA辦公系統都會有很多線上處理office辦公文件的需求。其中有一點也基本繞不開,那就是為文件蓋章或新增手寫簽名來保護文件,讓被蓋章的文件不再被編輯。 在Java中,我們都知道用於操作office的解決方案常用的有POI、OpenOffice等。但是這些解決方案有一個
centos6.5下安裝openoffice+jodconverter+swftool+flexpaper工具實現線上預覽文件功能
作用:linux下文件伺服器上傳文件轉換成pdf文件,再由swftool工具轉換成swf檔案實現線上預覽 環境:OS centos6.5 java環境 軟體包:Apac
asp.net 實現線上瀏覽word文件(word轉html)
最近在做word文件線上瀏覽,找了種種方法、控制元件之後,迴歸到word轉HTML,線上瀏覽.... 一下是後臺程式碼,前臺html頁面預設程式碼即可。 因為用檔案如下:using System; using System.Collections.Generic; usi
批處理刪除今天以前的同文件下的TXT檔案
@echo off set CUR_DATE=%date:~0,10% set CUR_DATE="%CUR_DATE% 00:00" echo 今日%cur_date% for %%a in ("%cd%\*.txt") do ( if "%%~ta" lss %CUR_DA
python操作資料庫,實現使用者名稱、密碼登入資料庫,首次登入自行設定密碼,並返回工資表明細。
python操作資料庫,實現使用者名稱、密碼登入資料庫,首次登入自行設定密碼,並返回工資表明細。 1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 4 # 匯入依賴包 5 import psycopg2 6 7 print("營
java 使用openoffice 轉換文件,成.pdf,實現線上預覽效果
1. 下載 openoffice 地址 https://pan.baidu.com/s/1dfpoG6zlawoW1pqpDvBL0A 密碼: v4ej 如果上面的地址無法訪問請訪問這個地址:下載地址如下:http://www.openof
用Python操作Excel,實現班級成績的統計
本次是在原來有一定格式的Excel文件中補充成績。 安裝的模組:xlwt 、 xlrd 、xlutils xlrd的模組是隻用讀取xls檔案,不能寫檔案,同理xlwt,只(新建寫)不讀已有的xls, xlrd的用法: 開啟檔案: data =xlrd.open_workbook(fime_path+'0
python資料處理,特徵工程,比賽等一定會用到的方法
1. 資料處理 # 資料預處理 # 1. 讀取資料: data_macro = pd.read_csv("macro.csv", parse_dates=['timestamp'], usecols=['timestamp'] + macro_cols) # 2. 顯示為
leetcode -- Multiply Strings -- python容易處理,需要看其他解法
python 一行搞定。因為乘法結果太大的話,python會自動增加儲存位數。 思路1 http://www.cnblogs.com/zuoyuan/p/3781515.html 這裡思路就是按照乘法的規則,可以將結果存在len(nums1) +
Windows搭建Python開發環境,實現Hello World 的列印
1.下載並安裝Python程式 1.1 下載Python 下載軟體的方式有很多種,可以去官網下載https://www.python.org 或者是 電腦管家中的軟體中心去下載。 1.2 安裝Python 跟普通的軟體安裝一樣,下一步、下一步,安裝的過程。 但是有兩個地
python 編寫程式,實現新建一個文字檔案,從文字中讀取字元
題目 定義一個函式tongji(fname),能實現顯示文字檔案內容,並統計出檔案中所有大寫字母,小寫字母,數字和其他符號的個數的功能。編寫程式,實現新建一個文字檔案,從裡面寫入任意行連續的字元,然後讀取該檔案內容,統計大小寫字母、數字和其他符號的個數。 執行結果示例:
Python異常處理,類的私有屬性
異常處理: 格式: try xxxx except 錯誤型別,變數名(可省): print "XXXXXXXXXXXX",變數名(可省) 例: #!/bin/env python import time try: name=['a'
利用Handler迴圈呼叫自身,實現線上程中無限迴圈的功能
如果某個功能需要實現無限迴圈,肯定是不能在UI執行緒中執行的,想到的第一種辦法肯定是放在新建的執行緒裡。 但是開闢新執行緒是需要消耗系統資源的,因為線上程之間切換需要花時間。 所以可以利用下面的程式碼來實現這個功能。 private Runnable mAction
Github 大牛封裝 Python 代碼,實現自動發送郵件只需三行代碼
常見 from 自動 mime mp3 fff 如何使用 utf html *註意:全文代碼可左右滑動觀看 在運維開發中,使用 Python 發送郵件是一個非常常見的應用場景。今天一起來探討一下,GitHub 的大牛門是如何使用 Python 封裝發送郵件代碼的。 一般發郵