Python 是一门通用性很强的语言,本文主要讲述其中的音频模块 gtts(Google文本到语音)的使用。
谷歌gTTS模块:gtts文档
百度语音合成api接口:api文档
pip install gTTS # 谷歌文字转语音
pip install baidu-aip # 语音合成
pip install playsound # 语音播放
pip install pyttsx3 # 语音引擎实现发音
pip install SpeechRecognition # 音频转文字
from gtts import gTTS
def text2voice():
"""文字转语音 - 谷歌 gtts模块"""
tts = gTTS(text="oh 宝贝! come on, baby!", lang="en")
tts.save("test.mp3")
进入语音合成网站,登录创建应用
from aip import AipSpeech
APP_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'])
from playsound import playsound
def play_voice():
playsound("store/test.mp3") # 音频文件路径
win32com
模块import win32com.client as win
def word_pronunciation():
speak = win.Dispatch("SAPI.SpVoice")
speak.Speak("come on, baby!")
speak.Speak("宝贝儿,你好!")
pyttsx3
模块
pyttsx3
模块可能会安装失败,可去官网下载指定版本
import pyttsx3
def 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()
首先去Speech to text官网注册.
到管理页面,获取凭证
入门教程: Speech to Text
python接口使用参考
音频转换文字方式:
curl
命令)import speech_recognition as sr
import requests
harvard = sr.AudioFile('audio.wav') # 文件路径
r = sr.Recognizer()
with harvard as source:
audio = r.record(source)
print(type(audio))
IBM_USERNAME = '******'
IBM_PASSWORD= '******'
text = r.recognize_ibm(audio, username = IBM_USERNAME, password = IBM_PASSWORD, language='zh-CN')
# 或者
text = r.recognize_google(audio, language = 'zh-CN')
print(text)
参考:ffmpeg使用参考
pip install ffmpeg
ffmpeg
添加到环境变量ffmpeg
路径
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('所有音频转换完毕!')
pip install pydub
from pydub import AudioSegment
def 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未找到,手动设置后,依旧没解决,这里做个标记,后续解决再补充,或者有人知道的可以告诉我一下,感谢!
原文可见:我的博客 - 音频文字转换