孫林 楊林
摘 ?要 當(dāng)前多媒體與網(wǎng)絡(luò)技術(shù)在教學(xué)中的應(yīng)用日漸普及,如課前的課件制作,課中的課件展示與教學(xué)互動(dòng),課后的作業(yè)上傳、批改與分析反饋等。百度AI平臺(tái)包含圖文聲像等多媒體與網(wǎng)絡(luò)以及人工智能技術(shù)的應(yīng)用接口?;诎俣華I平臺(tái),用Python語(yǔ)言開(kāi)發(fā)前端程序,可以高效完成教學(xué)中的語(yǔ)音處理工作??偨Y(jié)過(guò)程與方法,與大家交流分享。
關(guān)鍵詞 百度AI平臺(tái);Python語(yǔ)言;語(yǔ)音技術(shù);教學(xué)課件;校本教學(xué)資源庫(kù)
中圖分類(lèi)號(hào):G434 ? ?文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1671-489X(2021)15-0117-03
0 ?前言
在學(xué)校教學(xué)實(shí)踐工作中,教師制作了大量的教學(xué)課件,經(jīng)過(guò)多年的積累和完善,這些課件的實(shí)用性非常高,具有很高的保存和傳承價(jià)值。但其中部分有聲課件的配音受教師個(gè)人方言和錄制環(huán)境的影響,語(yǔ)音質(zhì)量較差,會(huì)嚴(yán)重影響教學(xué)中的使用效果。學(xué)校在建設(shè)校本教學(xué)資源庫(kù)的過(guò)程中,經(jīng)過(guò)比較,最終選擇基于百度AI平臺(tái)來(lái)優(yōu)化處理這些有聲課件,提高語(yǔ)音質(zhì)量,增加字幕說(shuō)明,使原課件變得“高大上”。這項(xiàng)工作受到課件制作者的肯定和歡迎,并且表示積極支持學(xué)校建立優(yōu)質(zhì)校本教學(xué)資源庫(kù)。
優(yōu)化處理課件中的語(yǔ)音步驟如下。
第一步,統(tǒng)一轉(zhuǎn)換有聲課件的文件格式為MP4,便于學(xué)校教學(xué)平臺(tái)的在線教學(xué)應(yīng)用。
第二步,導(dǎo)出課件中的配音并對(duì)其做簡(jiǎn)單處理,比如噪聲消除等,完成后導(dǎo)出為16 kHz的PCM格式音頻文件。
第三步,借助Python語(yǔ)言開(kāi)發(fā)前端程序,基于百度AI平臺(tái)對(duì)導(dǎo)出的聲音進(jìn)行語(yǔ)音識(shí)別并生成文本。由于最初采集音頻設(shè)備、環(huán)境及人的發(fā)音問(wèn)題,從實(shí)際轉(zhuǎn)換情況來(lái)看,多數(shù)有聲課件的識(shí)別轉(zhuǎn)換效果較差,需要后期人工對(duì)發(fā)音和識(shí)別錯(cuò)誤的文本進(jìn)行校正。
第四步,借助平臺(tái)和前端程序進(jìn)行語(yǔ)音合成,把文字轉(zhuǎn)換成語(yǔ)音,先消除原視頻中的配音,再導(dǎo)入轉(zhuǎn)換生成的標(biāo)準(zhǔn)配音,最終制作生成清晰標(biāo)準(zhǔn)的普通話配音視頻課件。根據(jù)需要和人力情況,還可以為其中的精品課件增加與配音同步的字幕說(shuō)明,這樣的課件效果較好,深受師生歡迎。
1 ?注冊(cè)百度AI賬號(hào),開(kāi)通語(yǔ)音技術(shù)服務(wù)
首先在百度AI平臺(tái)上(https://ai.baidu.com)注冊(cè)一個(gè)賬號(hào),原有百度賬號(hào)可直接使用。登錄完成后返回首頁(yè),打開(kāi)控制臺(tái)頁(yè)面,百度智能云平臺(tái)不僅有大數(shù)據(jù)、云計(jì)算、物聯(lián)網(wǎng)等服務(wù),還有語(yǔ)音技術(shù)、人臉識(shí)別、人體分析、文字識(shí)別、圖像識(shí)別等人工智能服務(wù)。本文限于篇幅和研究寬度,僅以語(yǔ)音技術(shù)應(yīng)用為例,介紹應(yīng)用方法和前端程序編寫(xiě)的代碼實(shí)現(xiàn)。
打開(kāi)語(yǔ)音技術(shù)項(xiàng),創(chuàng)建一個(gè)語(yǔ)音技術(shù)的新應(yīng)用,其中包括語(yǔ)音識(shí)別、語(yǔ)音合成等多種應(yīng)用。完成創(chuàng)建后打開(kāi)此應(yīng)用,分別選擇語(yǔ)音識(shí)別和語(yǔ)音合成服務(wù)項(xiàng),在語(yǔ)音識(shí)別的服務(wù)列表中找到音頻文件轉(zhuǎn)寫(xiě)項(xiàng),選擇API的中文普通話項(xiàng),點(diǎn)擊其后的免費(fèi)領(lǐng)取額度,音頻文件轉(zhuǎn)寫(xiě)的免費(fèi)額度在個(gè)人賬戶(hù)認(rèn)證后達(dá)10小時(shí)。再選擇語(yǔ)音合成服務(wù)項(xiàng),在API的基礎(chǔ)音庫(kù)和精品音庫(kù)項(xiàng)后點(diǎn)擊免費(fèi)領(lǐng)取額度,即可使用百度AI平臺(tái)的語(yǔ)音技術(shù)服務(wù)。
完成以上注冊(cè)和應(yīng)用創(chuàng)建后,百度AI平臺(tái)將為用戶(hù)分配一個(gè)語(yǔ)音技術(shù)應(yīng)用許可,打開(kāi)應(yīng)用列表,即可看到該應(yīng)用的AppID、API Key、Secret Key。記錄這三項(xiàng)數(shù)據(jù),在編程代碼中需要調(diào)用。正常免費(fèi)注冊(cè)的用戶(hù),其中基礎(chǔ)音庫(kù)和精品音庫(kù)可分別免費(fèi)使用5 000次和500次;個(gè)人認(rèn)證后分別可達(dá)五萬(wàn)次和2 000次,可滿足一般的使用量;如使用量大可另外購(gòu)買(mǎi),價(jià)格每次不到一分錢(qián)。
2 ?下載安裝Python編程軟件
Python官網(wǎng)免費(fèi)下載地址:https://www.python.org/downloads/。根據(jù)電腦安裝的系統(tǒng)和配置,下載相應(yīng)版本安裝使用。
3 ?編程實(shí)現(xiàn)語(yǔ)音處理
打開(kāi)Python的IDLE編程環(huán)境,新建Python文件。
1)為方便解釋代碼,每行后加符號(hào)#行號(hào)及相關(guān)內(nèi)容,僅做注釋用,不影響程序運(yùn)行;
2)限于篇幅,僅提供純文字組成的文本文件,經(jīng)過(guò)語(yǔ)音合成,生成語(yǔ)音文件的代碼。如要寫(xiě)語(yǔ)音識(shí)別的前端程序,僅需稍加修改程序中“readtype()”自定義函數(shù)代碼中的16~23行即可實(shí)現(xiàn)。
程序代碼如下。
from aip import AipSpeech ? ?#1導(dǎo)入百度AI平臺(tái)的
Python SDK
from tkinter import * ? ?#2導(dǎo)入實(shí)現(xiàn)圖形化用戶(hù)界面的
模塊tkinter
import os ? ?#3
import sys ? ?#4
import json ? ?#5
APP_ID=′2355****' ? ?#6百度AI平臺(tái)的語(yǔ)音技術(shù)應(yīng)
用許可(這是筆者申請(qǐng)的),文中已有說(shuō)明
API_KEY=′hXH1jHP0XhH6IDpsgItG****′ ? ?#7應(yīng)用
許可信息的后四位
SECRET_KEY=′tVkGhE0rCx5c45YCfukKIALchTGe****′
#8設(shè)為隱藏了
client=AipSpeech(APP_ID,API_KEY,SECRET_KEY)
#9
def get_file_content(filePath): ? ?#10自定義函數(shù):讀取
包含待轉(zhuǎn)換文字的文件
with open(filePath,′rb′) as fp: ? ?#11
return fp.read() ? ?#12
def readtype(lx): ? ?#13自定義函數(shù):調(diào)用百度AI平
臺(tái)接口,把包含待轉(zhuǎn)換文字的文本
文件轉(zhuǎn)換成MP3格式的音頻文件
n=1 ? ?#14文本文件名從1.TXT開(kāi)始
while n<=var.get(): ? ?#15直到用戶(hù)指定的第N個(gè)文件
結(jié)束,本例中最大數(shù)是5
txt=get_file_content(str(n)+′.txt′) ? ?#16
res=client.synthesis(txt,′zh′,1,{′per′:lx}) ? ?#17
f1=open(str(n)+′.mp3′,′wb′) ? ?#18
if not isinstance(res,dict): ? ?#19
with open(str(n)+′.mp3′,′wb′) as f1: ? ?#20
f1.write(res) ? ? #21
f1.close() ? ?#22
n=n+1 ? ?#23
lb.config(text="·········語(yǔ)音合成轉(zhuǎn)換結(jié)束·········")
#24
root=Tk() ? ?#25創(chuàng)建一個(gè)窗口
root.geometry(′460x240′) ? ?#26設(shè)置窗口大小
root.title('文字轉(zhuǎn)語(yǔ)音生成器') ? ?#27設(shè)置窗口標(biāo)題
lb1=Label(root,text='\n請(qǐng)選擇語(yǔ)音類(lèi)型\n') ? ?#28創(chuàng)建
一個(gè)提示標(biāo)簽
lb1.place(relx=0.1,rely=0.1,relwidth=0.8,relheight=0.1)
#29定義標(biāo)簽的坐標(biāo)位置、寬度和高度
def show(event): ? ?#30自定義函數(shù):實(shí)時(shí)顯示用戶(hù)選
擇的待轉(zhuǎn)換文件數(shù)
s='需要轉(zhuǎn)換的文件數(shù)是:%d'%(var.get()) ? ? #31
lb.config(text=s) ? ?#32
var=DoubleVar() ? ?#33
scl=Scale(root,orient=HORIZONTAL,length=200,from_=1,to=5,label='請(qǐng)選擇需要轉(zhuǎn)換的文件個(gè)數(shù)',tickinterval=1,resolution=1,variable=var) ? ?#34創(chuàng)建選擇轉(zhuǎn)換文件數(shù)滑塊,可
修改to=5,改變最大文件數(shù)
scl.bind('
函數(shù)show,在標(biāo)簽上實(shí)時(shí)顯
示用戶(hù)選擇的待轉(zhuǎn)換文件數(shù)
scl.pack() ? ?#36
lb=Label(root,text=′′) ? ?#37
lb.pack() ? ?#38
btn1=Button(root,text='渾厚男生',command=lambda:readtype(5003)) ? ?#39創(chuàng)建選擇語(yǔ)音轉(zhuǎn)換類(lèi)型的按鈕
btn1.place(relx=0.1,rely=0.6,relwidth=0.2,relheight=0.1) ? ? ? #40定義按鈕的坐標(biāo)位置、寬度和高度
btn2=Button(root,text='標(biāo)準(zhǔn)女生',command=lambda:readtype(5118)) ? ?#41
btn2.place(relx=0.4,rely=0.6,relwidth=0.2,relheight=0.1)
#42
btn3=Button(root,text='標(biāo)準(zhǔn)男生',command=lambda:readtype(106)) ? ?#43
btn3.place(relx=0.7,rely=0.6,relwidth=0.2,relheight=0.1)
#44
btn4=Button(root,text='退出',command=lambda:root.des
troy()) ? ?#45
btn4.place(relx=0.4,rely=0.8,relwidth=0.2,relheight=0.1)
#46
root.mainloop() ? ?#47事件循環(huán),等待用戶(hù)操作
4 ?前端程序代碼解釋
第1行代碼運(yùn)行的前提是已經(jīng)安裝了百度AI平臺(tái)提供的API接口驅(qū)動(dòng),安裝方法有兩種。
方法一:如果已經(jīng)安裝了pip,執(zhí)行“pip install baidu-aip”。
方法二:如果已經(jīng)安裝了setuptools,執(zhí)行“python setup.py install”。
第3~24行,調(diào)用百度AI平臺(tái)接口,把包含待轉(zhuǎn)換文字的文本文件轉(zhuǎn)換成MP3格式的音頻文件,文本文件的長(zhǎng)度必須小于1 024字節(jié),超過(guò)的要分成多個(gè)文件。如果需要,可修改本例中文件最大數(shù)5。
第39~46行,在圖形窗口界面中創(chuàng)建三個(gè)語(yǔ)音轉(zhuǎn)換類(lèi)型按鈕,轉(zhuǎn)換類(lèi)型代碼5003、5118、106分別命名為渾厚男生、標(biāo)準(zhǔn)女生、標(biāo)準(zhǔn)男生,其他更多支持類(lèi)型請(qǐng)參見(jiàn)百度AI平臺(tái)。
程序代碼調(diào)試正常運(yùn)行后,生成界面如圖1所示。
5 ?教學(xué)應(yīng)用成效
5.1 ?提高了校本有聲課件的配音質(zhì)量,教學(xué)質(zhì)量和效益明顯提升
使用以上方法優(yōu)化配音后的課件,在后期教學(xué)應(yīng)用中,師生反映課件變得“高大上”,特別是學(xué)生使用標(biāo)準(zhǔn)清晰的普通話配音課件,自主學(xué)習(xí)的積極性和學(xué)習(xí)質(zhì)量都有了明顯提升。
5.2 ?創(chuàng)新了教師制作有聲課件的思路,提升了課件制作水平和質(zhì)量
前期僅僅是用這個(gè)方法優(yōu)化處理原有課件中的配音,在面向?qū)W科教師培訓(xùn)時(shí),有教師提出因?yàn)榘l(fā)音、設(shè)備、環(huán)境等原因,有時(shí)候一個(gè)課件的配音要錄制很多次才能達(dá)到滿意的效果,能否直接用這個(gè)文字轉(zhuǎn)語(yǔ)音的方法配音呢?后期經(jīng)過(guò)不斷研究,增加了延時(shí)等音頻處理后,實(shí)現(xiàn)讓教師在制作課件配音時(shí)直接使用這個(gè)文字轉(zhuǎn)語(yǔ)音技術(shù),一次生成標(biāo)準(zhǔn)清晰的普通話配音課件。
6 ?結(jié)語(yǔ)
編程語(yǔ)言選擇Python是因?yàn)樗?jiǎn)單,以上程序?qū)崿F(xiàn),加上操作界面設(shè)計(jì),僅用47行代碼完成。當(dāng)前Python語(yǔ)言如此流行,首先是因?yàn)樗?jiǎn)單易學(xué),再就是基于Python語(yǔ)言的人工智能應(yīng)用越來(lái)越多。前幾年P(guān)ython語(yǔ)言課程在大學(xué)專(zhuān)門(mén)為計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生開(kāi)設(shè),近幾年各省基礎(chǔ)教育段的信息技術(shù)課程教材也逐步開(kāi)始選用Python語(yǔ)言。學(xué)校從2020年開(kāi)始使用Python語(yǔ)言,教材是由教育科學(xué)出版社出版的《信息技術(shù)(必修一):數(shù)據(jù)與計(jì)算》,因此推薦大家學(xué)習(xí)Python語(yǔ)言。如果讀者偏好其他語(yǔ)言,可以模仿以上代碼,參考百度AI平臺(tái)的API接口應(yīng)用說(shuō)明完成。
近半年來(lái)使用以上程序和方法,學(xué)校信息中心已經(jīng)完成一萬(wàn)多個(gè)高中學(xué)科基于知識(shí)點(diǎn)講解的有聲課件優(yōu)化整理工作。目標(biāo)是與全校學(xué)科教師一起奮斗,再接再厲,爭(zhēng)取盡快建立系統(tǒng)的、完善的高中全學(xué)科校本教學(xué)資源庫(kù),全力推進(jìn)學(xué)校智慧教育教學(xué)工作。
參考文獻(xiàn)
[1]趙佳.基于百度AI平臺(tái)的人工智能類(lèi)課程教學(xué)實(shí)踐探索[J].阜陽(yáng)師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2020(4):113-115.
[2]高冬平,項(xiàng)華.巧用免費(fèi)AI開(kāi)放平臺(tái) 開(kāi)展小學(xué)人工智能啟蒙教學(xué)[J].中小學(xué)信息技術(shù)教育,2020(9):74-77.
[3]任昕.基于AI開(kāi)放平臺(tái)的人工智能教學(xué)初探:以情感傾向分析項(xiàng)目為例[J].中國(guó)信息技術(shù)教育,2019(8):52-55.