知識點:什么是掌控板?
掌控板是一塊普及STEAM創(chuàng)客教育、人工智能教育、機器人編程教育的開源智能硬件。它集成ESP-32高性能雙核芯片,支持WiFi和藍牙雙模通信,可作為物聯(lián)網(wǎng)節(jié)點,實現(xiàn)物聯(lián)網(wǎng)應用。同時掌控板上集成了OLED顯示屏、RGB燈、加速度計、麥克風、光線傳感器、蜂鳴器、按鍵開關、觸摸開關、金手指外部拓展接口,支持圖形化及MicroPython代碼編程,可實現(xiàn)智能機器人、創(chuàng)客智造作品等智能控制類應用。
1、TTS(Text-To-Speech,文本到語音)
TTS是Text To Speech的縮寫,即“從文本到語音”,是人機對話的一部分,將文本轉(zhuǎn)化問文字,讓機器能夠說話。我們比較熟悉的ASR(Automatic Speech Recognition),是將聲音轉(zhuǎn)化為文字,可類比于人類的耳朵。而TTS是將文字轉(zhuǎn)化為聲音(朗讀出來),類比于人類的嘴巴,是人機對話的一部分,讓機器能夠說話。
TTS是同時運用語言學和心理學的杰出之作,在內(nèi)置芯片的支持之下,通過神經(jīng)網(wǎng)絡的設計,把文字智能地轉(zhuǎn)化為自然語音流。TTS技術對文本文件進行實時轉(zhuǎn)換,轉(zhuǎn)換時間之短可以秒計算。在其特有智能語音控制器作用下,文本輸出的語音音律流暢,使得聽者在聽取信息時感覺自然,毫無機器語音輸出的冷漠與生澀感。TTS語音合成技術 [1] 即將覆蓋國標一、二級漢字,具有英文接口,自動識別中、英文,支持中英文混讀。所有聲音采用真人普通話為標準發(fā)音,實現(xiàn)了120-150個漢字/分鐘的快速語音合成,朗讀速度達3-4個漢字/秒,使用戶可以聽到清晰悅耳的音質(zhì)和連貫流暢的語調(diào)。有少部分MP3隨身聽具有了TTS功能。
附:什么是人工智能?
顧名思義就是由人創(chuàng)造的"智慧能力",具備聽說看理解等能力。
聽 ==語音識別
說 ==語音合成
看 ==圖像視頻文字識別
理解 ==語言(文字)圖像視頻理解等邏輯處理
思考 ==理解后的邏輯處理
2、語音合成(SpeechSynthesis)
語音合成,能將任意文字信息實時轉(zhuǎn)化為標準流暢的語音朗讀出來,相當于給機器裝上了人工嘴巴。它涉及聲學、語言學、數(shù)字信號處理、計算機科學等多個學科技術,是中文信息處理領域的一項前沿技術,解決的主要問題就是如何將文字信息轉(zhuǎn)化為可聽的聲音信息,也即讓機器像人一樣開口說話。我們所說的“讓機器像人一樣開口說話”與傳統(tǒng)的聲音回放設備(系統(tǒng))有著本質(zhì)的區(qū)別。傳統(tǒng)的聲音回放設備(系統(tǒng)),如磁帶錄音機,是通過預先錄制聲音然后回放來實現(xiàn)“讓機器說話”的。這種方式無論是在內(nèi)容、存儲、傳輸或者方便性、及時性等方面都存在很大的限制。而通過計算機語音合成則可以在任何時候?qū)⑷我馕谋巨D(zhuǎn)換成具有高自然度的語音,從而真正實現(xiàn)讓機器“像人一樣開口說話”。
語音合成是通過機械的、電子的方法產(chǎn)生人造語音的技術。TTS技術(又稱文語轉(zhuǎn)換技術)隸屬于語音合成,它是將計算機自己產(chǎn)生的、或外部輸入的文字信息轉(zhuǎn)變?yōu)榭梢月牭枚?、流利的漢語口語輸出的技術。TTS將儲存于電腦中的文件,如幫助文件或者網(wǎng)頁,轉(zhuǎn)換成自然語音輸出。TTS不僅能幫助有視覺障礙的人閱讀計算機上的信息,更能增加文本文檔的可讀性。TTS應用包括語音驅(qū)動的郵件以及聲音敏感系統(tǒng),并常與聲音識別程序一起使用。語音合成滿足將文本轉(zhuǎn)化成擬人化語音的需求,打通人機交互閉環(huán)。 提供多種音色選擇,支持自定義音量、語速,讓發(fā)音更自然、更專業(yè)、更符合場景需求。語音合成廣泛應用于語音導航、有聲讀物、機器人、語音助手、自動新聞播報等場景,提升人機交互體驗,提高語音類應用構(gòu)建效率。
3、TTS一般分為兩個步驟
(1) 文本處理。這一步做的事情是把文本轉(zhuǎn)化成音素序列,并標出每個音素的起止時間、頻率變化等信息。作為一個預處理步驟,它的重要性經(jīng)常被忽視,但是它涉及到很多值得研究的問題,比如拼寫相同但讀音不同的詞的區(qū)分、縮寫的處理、停頓位置的確定,等等。
(2)語音合成。狹義上這一步專指根據(jù)音素序列(以及標注好的起止時間、頻率變化等信息)生成語音,廣義上它也可以包括文本處理的步驟。這一步主要有三類方法:
a、拼接法,即從事先錄制的大量語音中,選擇所需的基本單位拼接而成。這樣的單位可以是音節(jié)、音素等等;為了追求合成語音的連貫性,也常常用使用雙音子(從一個音素的中央到下一個音素的中央)作為單位。拼接法合成的語音質(zhì)量較高,但它需要錄制大量語音以保證覆蓋率。
b、參數(shù)法,即根據(jù)統(tǒng)計模型來產(chǎn)生每時每刻的語音參數(shù)(包括基頻、共振峰頻率等),然后把這些參數(shù)轉(zhuǎn)化為波形。參數(shù)法也需要事先錄制語音進行訓練,但它并不需要100%的覆蓋率。參數(shù)法合成出的語音質(zhì)量比拼接法差一些。
c、聲道模擬法。參數(shù)法利用的參數(shù)是語音信號的性質(zhì),它并不關注語音的產(chǎn)生過程。與此相反,聲道模擬法則是建立聲道的物理模型,通過這個物理模型產(chǎn)生波形。這種方法的理論看起來很優(yōu)美,但由于語音的產(chǎn)生過程實在是太復雜,所以實用價值并不高。
4、在訊飛開放平臺注冊
TTS是Text To Speech的縮寫,即“從文本到語音”,是人機對話的一部分,將文本轉(zhuǎn)化問文字,讓機器能夠說話。
掌控拓展板的在線語音合成功能是使用 訊飛在線語音合成API(https://www.xfyun.cn/services/online_tts) ,用戶在使用該功能前,需要在訊飛開放平臺注冊并做相應的配置。
步驟1.在訊飛 https://www.xfyun.cn 注冊賬號。
步驟2.創(chuàng)建新應用,應用平臺選擇"WebAPI"
步驟3.添加"在線語音合成"服務,且在程序中傳入APPID、APIKey實例 TTS ,獲取自己的公網(wǎng)IP(http://www.ip138.com)并添加到IP白名單。
注意
在調(diào)用該業(yè)務接口時,授權(quán)認證通過后,服務端會檢查調(diào)用方IP是否在訊飛開放平臺配置的IP白名單中,對于沒有配置到白名單中的IP發(fā)來的請求,服務端會拒絕服務。
IP白名單,在 控制臺-我的應用-相應服務的應用管理卡片上 編輯,保存后五分鐘左右生效。
每個IP白名單最多可設置5個IP,IP為外網(wǎng)IP,請勿設置局域網(wǎng)IP。
5、文字轉(zhuǎn)語音
#MicroPython動手做(25)——語音合成與語音識別
#測試文字轉(zhuǎn)語音
注意
TTS功能依賴網(wǎng)絡,使用是注意先連接網(wǎng)絡并保持網(wǎng)絡通暢!
首先使用 ntptime.settime() 校準RTC時鐘。
然后 player_init() 初始化。
用 xunfei_tts_config(api_key, appid ) , appid , api_key 為必選參數(shù),在訊飛平臺的應用的APPID、API_KET 。
然后使用 xunfei_tts(text) 將文本轉(zhuǎn)為語音并播放。
TTS支持中英文的文本轉(zhuǎn)換。你可以將你想要說話的內(nèi)容,通過文本的形式轉(zhuǎn)化為語音。這樣你就可以給你掌控板添上“人嘴”,模擬人機對話場景。
#MicroPython動手做(25)——語音合成與語音識別
#測試文字轉(zhuǎn)語音
from mpython import *
import network
import ntptime
from xunfei import *
import audio
my_wifi = wifi()
my_wifi.connectWiFi("zh", "zy1567")
while True:
try:
ntptime.settime(8, "time.windows.com")
break
except:
pass
Text = "掌控板TTS文字轉(zhuǎn)語音以及語音識別"
Audio = "tts.pcm"
speech_tts = Xunfei_speech("5ec66b", "5d32b259f15b2902d81b9efd22926", "3aace39c0ecea76ef46a200300826", mode=MODE_TTS, AudioFile=Audio, Text=Text)
print("Processing, please wait....")
speech_tts.tts()
audio.player_init()
audio.set_volume(100)
audio.play(Audio)
運行程序后,一直出錯,換成2.0版掌控板,又重刷固件,仍是不行。后來偶然發(fā)現(xiàn),訊飛開發(fā)平臺有個IP白名單,需要保持更新(每次打開電腦的IP地址是隨機分配的),否則無法使用WebAPI調(diào)用方式。
核查IP https://www.ip138.com/
mPython X 圖形編程文章來源:http://www.zghlxwxcb.cn/news/detail-656406.html
MicroPython動手做(25)——語音合成與語音識別
#測試文字轉(zhuǎn)語音(視頻)
https://v.youku.com/v_show/id_XNDY4MjQyODY0MA==.html?spm=a2h0c.8166622.PhoneSokuUgc_1.dtitle
6、AB按鍵切換語言合成項目
#MicroPython動手做(25)——語音合成與語音識別
#AB按鍵切換語言合成項目
from mpython import *
import network
import time
import ntptime
from xunfei import *
import audio
my_wifi = wifi()
my_wifi.connectWiFi("zh", "zy1567")
def on_button_a_down(_):
global Audio, Text
time.sleep_ms(10)
if button_a.value() == 1: return
rgb[0] = (int(102), int(0), int(0))
rgb.write()
time.sleep_ms(1)
Text = "A鍵被按下"
Audio = "tts.pcm"
speech_tts = Xunfei_speech("5ec66b", "5d32b259f15b2902d81b9efd22926", "3aace39c0ecea76ef46a200300826", mode=MODE_TTS, AudioFile=Audio, Text=Text)
print("Processing, please wait....")
speech_tts.tts()
oled.fill(0)
oled.DispChar(" A鍵被按下", 0, 16, 1)
oled.show()
audio.player_init()
audio.set_volume(120)
audio.play(Audio)
time.sleep(2)
oled.fill(0)
rgb[0] = (0, 0, 0)
rgb.write()
time.sleep_ms(1)
oled.show()
def on_button_b_down(_):
global Audio, Text
time.sleep_ms(10)
if button_b.value() == 1: return
rgb[2] = (int(102), int(0), int(0))
rgb.write()
time.sleep_ms(1)
Text = "B鍵被按下"
Audio = "tts.pcm"
speech_tts = Xunfei_speech("5ec66b", "5d32b259f15b2902d81b9efd22926", "3aace39c0ecea76ef46a200300826", mode=MODE_TTS, AudioFile=Audio, Text=Text)
print("Processing, please wait....")
speech_tts.tts()
oled.fill(0)
oled.DispChar(" B鍵被按下", 0, 16, 1)
oled.show()
audio.player_init()
audio.set_volume(120)
audio.play(Audio)
time.sleep(2)
oled.fill(0)
rgb[2] = (0, 0, 0)
rgb.write()
time.sleep_ms(1)
oled.show()
button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)
button_b.irq(trigger=Pin.IRQ_FALLING, handler=on_button_b_down)
rgb[1] = (int(0), int(51), int(0))
rgb.write()
time.sleep_ms(1)
while True:
try:
ntptime.settime(8, "time.windows.com")
break
except:
pass
mPython X 圖形編程
文章來源地址http://www.zghlxwxcb.cn/news/detail-656406.html
到了這里,關于【雕爺學編程】MicroPython動手做(25)——語音合成與語音識別的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!