当前位置 博文首页 > dragonandsky的博客:python文本转音频问题--以及flask实现的网
pyttsx3,python的一个文本转语言非常好的库
但是最近安装的时候总是报一些奇奇怪怪的问题!
解决办法很简单
先这样,然后就好了
pip install -U setuptools
pip install pyttsx3
总有一些博客喜欢说要安装pywin32的其实pip install pytts3就会直接安装pywin32,如果你没有那你就还是pip一下吧!
可以考虑我这篇博文
考研的福音,文本转音频,支持docx,txt文件
最近有做那个每日英语句子的版块
每天一个英文句子,大伙学起来!!!
随着我不断更新:现在第一板块:跟AI聊天;第三版块:查看照片地址信息外;第二板块新增句子音频。采用的就是pyttx3将文本转音频的技术
import os
import pyttsx3
import re
import json
#保存音频文件
def savetheaudio(strx,time):
engine = pyttsx3.init()
# 设置新的语音速率
engine.setProperty('rate', 170)
rate = engine.getProperty('rate')
#engine.say(strx)
engine.save_to_file(strx,time+'.mp3')
engine.runAndWait()
print("文件目录:"+time+'.mp3')
#获取文件路径,后缀
if __name__ == '__main__':
with open('./data/englishJson.json','r',encoding="UTF-8")as file:
englishsentense = json.loads(file.read())
for english in englishsentense:
path = 'C:/wwwroot/192.168.1.104/english/'+english["Time"]
sentence = english["Sentence"]
savetheaudio(sentence,path)
文本采用json串存储,不仅可以读取到页面显示,也能直接用于文本转音频,存储为对应的日期.mp3文件,这样就可以用于后台变化对应的日期与文本音频
另外整个所有页面的后台逻辑上都是采用flask python模块实现,非常的方便—推荐推荐
特别是开头的日历模块也是用python 的calendar模块做的非常的人性化
def get_calendar(year,month):
year = int(year)
month = int(month)
num_zero = calendar.monthrange(year,month)[0]+1
d = calendar.monthrange(year,month)[1]
zero = np.zeros(num_zero).astype('int32')
days =np.arange(1,d+1)
beforelist = np.hstack((zero,days))
num_zero1 = 42-len(beforelist)
if num_zero1!=0:
zero1 = np.zeros(num_zero1).astype('int32')
endlist = np.hstack((beforelist,zero1))
endlist = endlist.reshape(6,7)
else:
endlist = beforelist.reshape(6,7)
return endlist
因为用python获取照片地址的代码网上到处都有,我也不是原创就不沾在这里了:说明我的网站并没有保持你上传的照片,只是读取了信息最后都会删除
def photos_address():
if request.method == 'POST':
f = request.files.get('photo')
if f.filename == '':
flash('No selected file')
print('No selected file')
return redirect('inxex')
if f and allowed_file(f.filename):
print(allowed_file(f.filename))
path = './'+"gps"+secure_filename(f.filename)
f.save(path)
try:
photo_time,photo_address =huzhiwen.show_img_address(path)
except Exception as e:
return redirect(url_for('index',photo_time="照片格式错误",photo_address="照片格式错误"))
os.remove(path)
return redirect(url_for('index',photo_time=photo_time,photo_address=photo_address))
如上os.remove(path)即移除了该照片
采用全网已知的青云客AI网上也很好搜到就不再这里粘贴了
最终实现只有不到100行需要管理的代码
主要是我挺多函数都封装在了自己的模块
我的模块封装了近20个函数吧!不过本网页只用到了6个
也就不到120行,除去引入的包,也就100行代码
因为我前端代码不熟练,前端代码有200多行,不过个人觉得总体效果还是不错的!!