語音識別技術(shù),也被稱為自動語音識別,目標是以電腦自動將以人類的語音內(nèi)容轉(zhuǎn)換為相應的文字和文字轉(zhuǎn)換為語音。
一. 文本轉(zhuǎn)換為語音
1.1 使用pyttsx
使用名為pyttsx的python包,可以將文本轉(zhuǎn)換為語音。
安裝pyttsx包
pip install pyttsx3
示例
import?pyttsx3?as?pyttsx engine?=?pyttsx.init() engine.say("Python由荷蘭數(shù)學和計算機科學研究學會的吉多·范羅蘇姆于1990年代初設(shè)計,作為一門叫做ABC語言的替代品。") engine.runAndWait()
運行之后可以播放語音。
1.2 ?使用SAPI
在python 中,也可以使用SAPI 來將文本轉(zhuǎn)換為語音。
使用Win32com.client包,不需要另外安裝。
示例
from?win32com.client?import?Dispatch msg?="Python由荷蘭數(shù)學和計算機科學研究學會的吉多·范羅蘇姆于1990年代初設(shè)計,作為一門叫做ABC語言的替代品。" speaker?=?Dispatch("SAPI.SpVoice") speaker.Speak(msg) del?speaker
使用SpeechLib可以將文本轉(zhuǎn)換為語音文件
使用SpeechLib,可以從文本文件中獲取輸入,再將其轉(zhuǎn)換為語音文件。先使用pip安裝,命令如下:
pip install comtypes
示例
from?comtypes.client?import?CreateObject from?comtypes.gen?import?SpeechLib infile?=?'C:\Users\10619\Desktop\fileText.txt' f?=?open(infile,?'r') theText?=?f.read() f.close() outfile?=?'demo_audio.wav' engine?=?CreateObject("SAPI.SpVoice") stream?=?CreateObject("SAPI.SpFileStream") stream.Open(outfile,SpeechLib.SSFMCreateForWrite) engine.AudioOutputStream?=?stream engine.speak(theText) stream.close()
運行之后,會輸出demo_audio.wav語音文件,打開demo_audio.wav文件并播放。
二. 語音轉(zhuǎn)換為文本
使用PocketSphinx包, PocketSphinx是一個用于語音轉(zhuǎn)換文本的開源API。它是一個輕量級的語音識別引擎,盡管在桌面端也能很好的工作,它還專門為手機和移動設(shè)備做過調(diào)優(yōu)。首先使用pip命令安裝所需模塊,命令如下:
pip install PocketSphinx pip install SpeechRecognition
在安裝PocketSphinx 可能會報錯(ERROR: Could not build wheels for pocketsphinx, which is required to install pyproject.toml-based projects)。解決方法:通過查看pip可安裝文件,查看可安裝的文件命令:pip debug --verbose,然后查看Compatible tags: 33下可以安裝的版本。
然后到https://www.lfd.uci.edu/~gohlke/pythonlibs/#pocketsphinx,下載對應版本的whl文件包安裝。
然后再安裝PocketSphinx和SpeechRecognition包。
腳本示例
import?speech_recognition?as?sr r?=?sr.Recognizer() audio_file?=?'demo_audio.wav' with?sr.AudioFile(audio_file)?as?source: ? ?audio?=?r.record(source) try: ? ?print("文本內(nèi)容:",r.recognize_sphinx(audio,language='zh-CN')) ? ?#默認會識別為英文,如果要識別中文,需要下載普通話識別文件 except?Exception?as?e: ? ?print(e)
下載普通話識別文件。
下載路徑:https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/Mandarin/
解壓之后,修改文件名稱,cmusphinx-zh-cn-5.2 改為 zh-CN, zh_cn.cd_cont_5000文件夾改為acoustic-model,zh_cn.dic改為pronounciation-dictionary.dict,zh_cn.lm.bin改為language-model.lm.bin。然后移動zn-CN文件夾到python3Libsite-packagesspeech_recognitionpocketsphinx-data下。
運行python之后,可以查看輸出的文本內(nèi)容。
通過輸出的語音轉(zhuǎn)換之后的文本和原文本比較發(fā)現(xiàn),語音識別的后文本還是有一定差異的。
編輯:黃飛
?
評論