Python(九)- 音频文字转换
生活随笔
收集整理的這篇文章主要介紹了
Python(九)- 音频文字转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python 是一門通用性很強的語言,本文主要講述其中的音頻模塊 gtts(Google文本到語音)的使用。
1.音頻模塊簡介
- 文本轉語音:
- gtts:谷歌模塊
- aip:百度合成
- 格式轉換:
- pydub和ffmpeg:實現mp3轉wav格式
- 發音:
- pyttsx3:系統內置語音引擎實現發音,不生成mp3
- win32com:Windows操作系統內置的語音引擎實現文字發音
- 音頻轉文字:
- SpeechRecognition:IBM speech to text
谷歌gTTS模塊:gtts文檔
百度語音合成api接口:api文檔
2.模塊安裝
pip install gTTS # 谷歌文字轉語音 pip install baidu-aip # 語音合成 pip install playsound # 語音播放 pip install pyttsx3 # 語音引擎實現發音 pip install SpeechRecognition # 音頻轉文字3.文字轉音頻
3.1.gtts模塊使用
from gtts import gTTSdef text2voice():"""文字轉語音 - 谷歌 gtts模塊"""tts = gTTS(text="oh 寶貝! come on, baby!", lang="en")tts.save("test.mp3")3.2.百度合成
進入語音合成網站,登錄創建應用
from aip import AipSpeechAPP_ID = '你的 App ID' API_KEY = '你的 Api Key' SECRET_KEY = '你的 Secret Key' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)# 合成音頻 def text_mixin_vocie():result = client.synthesis('你好嗎?', 'zh', 1, {'vol': 5, })# 識別正確返回語音二進制 錯誤則返回dict if not isinstance(result, dict):with open('auido.mp3', 'wb') as f:f.write(result)# 讀取文件 def get_file_content(filePath):cmd_str = "ffmpeg -y -i %s -acodec pcm_s16le -f s16le -ac 1 -ar 16000 %s.pcm"%(filePath, filePath)os.system(cmd_str) # 調用系統命令ffmpeg,傳入音頻文件名即可with open(filePath + ".pcm", 'rb') as fp:return fp.read()# 識別本地文件 res = client.asr(get_file_content('audio.m4a'), 'pcm', 16000, {'dev_pid': 1536, # 1536表示能識別中文和英文,它的容錯率比較高 }) print(res) print(res['result'])3.3.語音播放
from playsound import playsounddef play_voice():playsound("store/test.mp3") # 音頻文件路徑3.4.文字發音
- win32com 模塊
- pyttsx3 模塊
pyttsx3 模塊可能會安裝失敗,可去官網下載指定版本
import pyttsx3def word_pronunciation_v2():engine = pyttsx3.init()engine.setProperty("voice", "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ZH - CN_HUIHUI_11.0")engine.say('開始語音合成中...')engine.say("你好嗎?寶兒姐...")engine.say('全世界都在說中國話...')engine.runAndWait()4.音頻轉文字
4.1.注冊IBM應用
首先去Speech to text官網注冊.
4.2.獲取憑證
到管理頁面,獲取憑證
4.3.轉換實現
入門教程: Speech to Text
python接口使用參考
音頻轉換文字方式:
- python 腳本運行命令轉錄音頻(參考文檔中的 curl 命令)
- requests調用api接口(https://gateway-wdc.watsonplatform.net/speech-to-text/api/v1/recognize)
- speech_recognition模塊
5.音頻格式轉換
5.1.ffmpeg的使用
5.1.1.安裝ffmpeg
參考:ffmpeg使用參考
pip install ffmpeg5.1.2.引入exe路徑:
- 將 ffmpeg 添加到環境變量
- 在代碼中引入 ffmpeg 路徑
5.1.3.實現轉換
def trans_voice_type():"""音頻格式轉換"""source_path = "xxx"save_path = 'xxx'source_file = os.listdir(source_path)for source in source_file:old_path = os.path.join(source_path, source)new_name = os.path.join(save_path, source[:-4]) # 截取音頻名字,刪除后綴print('正在轉換音頻:{}'.format(new_name))os.popen("C:\\python\\python36\\Tools\\ffmpeg\\bin\\ffmpeg.exe -i " + old_path + " " + new_name + ".wav")print('所有音頻轉換完畢!')5.2.pydub的使用
5.2.1.安裝pydub
pip install pydub5.2.2.實現轉換
from pydub import AudioSegmentdef convert_video(file_path):outfile = os.path.splitext(os.path.realpath(file_path))[0] + '.wav'AudioSegment.converter = "C:\\python\\python36\\Tools\\ffmpeg\\bin\\ffmpeg.exe"AudioSegment.from_file(file_path).export(outfile, format='wav')以上關于pydub轉換時,會有FileNotFoundError報錯信息,這是由于依賴程序ffmpeg未找到,手動設置后,依舊沒解決,這里做個標記,后續解決再補充,或者有人知道的可以告訴我一下,感謝!
原文可見:我的博客 - 音頻文字轉換
總結
以上是生活随笔為你收集整理的Python(九)- 音频文字转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mac 上mysql_connect_W
- 下一篇: web 服务器 内存 影响_高性能服务器