微軟語音包下載地址:
https://www.microsoft.com/en-us/download/details.aspx?id=27224
可以選擇中文相關(guān)的下載
MSSpeech_TTS_zh-CN_HuiHui.msi
MSSpeech_TTS_zh-TW_HanHan.msi
MSSpeech_TTS_zh-HK_HunYee.msi
MSSpeech_SR_zh-CN_TELE.msi
MSSpeech_SR_zh-TW_TELE.msi
MSSpeech_SR_zh-HK_TELE.msi
涉及的術(shù)語:
TTS(Text To Sound)是文本轉(zhuǎn)語音
SR(Speech Recognition)是語音識(shí)別
根據(jù)提示,需要先安裝運(yùn)行環(huán)境秫舌。
如果是軟件開放的妖,還需要安裝SDK
Windows系統(tǒng)中如何添加語音
設(shè)置 -> 時(shí)間和語言 -> 語音,點(diǎn)擊添加語音足陨,彈出框中輸入中文查詢/添加
安裝pyttsx3
pip install pyttsx3
更多內(nèi)容見官網(wǎng):https://pypi.org/project/pyttsx3/
簡要介紹pyttsx3的特性
- 可以使用本機(jī)的語音包將文字轉(zhuǎn)換為語音嫂粟。
- 可以直接播放語音,也可以將語音保存為mp3文件墨缘。
- 可以設(shè)置音量星虹,可以調(diào)整語速。
官網(wǎng)中提到 voices[0].id 是男聲镊讼,voices[1].id) 是女生宽涌,描述不準(zhǔn)確,應(yīng)該和自己電腦中的語音包有關(guān)蝶棋。
在我的電腦卸亮,默認(rèn)有三個(gè)voice,分別是中文玩裙、日語嫡良、英語。
voices = engine.getProperty('voices') #getting details of current voice
#engine.setProperty('voice', voices[0].id) #changing index, changes voices. o for male
engine.setProperty('voice', voices[1].id) #changing index, changes voices. 1 for female
Python代碼查看本機(jī)可用的語音包
import pyttsx3
tts = pyttsx3.init()
voices = tts.getProperty('voices')
for voice in voices:
print('id = {} \nname = {} \n'.format(voice.id, voice.name))
我又安裝了兩個(gè)語音包献酗,所以本機(jī)有5個(gè)語音包
id = HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ZH-CN_HUIHUI_11.0
name = Microsoft Huihui Desktop - Chinese (Simplified)
id = HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_JA-JP_HARUKA_11.0
name = Microsoft Haruka Desktop - Japanese
id = HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_ZIRA_11.0
name = Microsoft Zira Desktop - English (United States)
id = HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ZH-HK_TRACY_11.0
name = Microsoft Tracy Desktop - Chinese(Traditional, HongKong SAR)
id = HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ZH-TW_HANHAN_11.0
name = Microsoft Hanhan Desktop - Chinese (Taiwan)
各種語音包效果(不能上傳語音寝受,放棄)
曾經(jīng)有一份真誠的愛情擺在我的面前,但是我沒有珍惜罕偎。等到了失去的時(shí)候才后悔莫及很澄,塵世間最痛苦的事莫過于此。如果上天可以給我一個(gè)機(jī)會(huì)再來一次的話颜及,我會(huì)對(duì)你說三個(gè)字‘我愛你’甩苛。如果非要把這份愛加上一個(gè)期限,我希望是一萬年俏站!
python程序(通過程序界面實(shí)現(xiàn)文字轉(zhuǎn)語音功能)
運(yùn)行后界面如下:
效果評(píng)價(jià)
滿滿機(jī)器人發(fā)音味道讯蒲,聲音不夠自然。
python源代碼
import PySimpleGUI as sg
import pyttsx3
import time
# 語音包序號(hào)肄扎,默認(rèn)第一個(gè)(中文)
voiceIdx = 0
# 主題色
sg.theme('DarkAmber')
# 窗口布局
layout = [
[sg.Text('請(qǐng)輸入需要轉(zhuǎn)換為語音的文字')],
[sg.Multiline('', size=(100,10), key='textContent')],
[sg.Text('調(diào)整速率')],
[sg.Slider(range=(100,400), default_value=200, size=(50,15), orientation='horizontal', font=('Helvetica', 12), key='rateNumber')],
[sg.Text('語音選項(xiàng)')],
[sg.Radio('中文', 'S1', enable_events=True, key='id0', default=True),
sg.Radio('日語', 'S1', enable_events=True, key='id1'),
sg.Radio('英語', 'S1', enable_events=True, key='id2'),
sg.Radio('中文(香港)', 'S1', enable_events=True, key='id3'),
sg.Radio('中文(臺(tái)灣)', 'S1', enable_events=True, key='id4'),],
[sg.Button('試聽', key='ttsButton1'), sg.Button('轉(zhuǎn)換為MP3', key='ttsButton2'),]
]
# 創(chuàng)建窗口
window = sg.Window('文字轉(zhuǎn)語音工具', layout)
# 循環(huán)處理事件
while True:
event, values = window.read()
# 用戶點(diǎn)擊X關(guān)閉窗口或點(diǎn)擊退出按鈕
if event == sg.WIN_CLOSED:
break
if event == 'id0':
voiceIdx = 0
if event == 'id1':
voiceIdx = 1
if event == 'id2':
voiceIdx = 2
if event == 'id3':
voiceIdx = 3
if event == 'id4':
voiceIdx = 4
print(voiceIdx)
if event == 'ttsButton1' or event == 'ttsButton2':
# 初始化
tts = pyttsx3.init()
# 獲取新舊 RATE
rate = tts.getProperty('rate')
newRate = int(values['rateNumber'])
# 修改 RATE
tts.setProperty('rate', newRate)
# # 獲取 VOICES
voices = tts.getProperty('voices')
# # 修改 VOICE
tts.setProperty('voice', voices[voiceIdx].id)
# 獲取文字
textContent = values['textContent']
# 試聽
if event == 'ttsButton1':
tts.say(textContent)
tts.runAndWait()
tts.stop()
#并轉(zhuǎn)換為MP3
if event == 'ttsButton2':
mp3Filename = str(voiceIdx)+'_'+str(time.time())+".mp3"
info = '轉(zhuǎn)換成功墨林,詳見:' + mp3Filename
tts.save_to_file(textContent, mp3Filename)
tts.runAndWait()
sg.popup('', info, '', title='提示')
window.close()
補(bǔ)充
如果你本機(jī)的語音包和我的不同赁酝,需要修改語音選項(xiàng)相關(guān)代碼