# -*- coding: utf- -*-

import requests
import re
import os
import time
from aip import AipSpeech
from tkinter import *
from tkinter import ttk
import tkinter.messagebox #参数 类型 描述 是否必须
#tex String 合成的文本,使用UTF-8编码,
#请注意文本长度必须小于1024字节 是
#cuid String 用户唯一标识,用来区分用户,
#填写机器 MAC 地址或 IMEI 码,长度为60以内 否
#spd String 语速,取值0-,默认为5中语速 否
#pit String 音调,取值0-,默认为5中语调 否
#vol String 音量,取值0-,默认为5中音量 否
#per String 发音人选择, 0为女声,1为男声,
#3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女 否 def wordToFileB():
print('开始转文件')
data = word_e.get('1.0','end')
per = var_per.get()
filepath = var_path.get()
num = len(word_e.get('1.0','end'))
var_ws.set('已输入'+str(num)+'字')
#print(data)
#print(per)
#print(filepath)
if num > :
tkinter.messagebox.showwarning('警告','请输入不超过500字')
else:
wordToFile(data,per,filepath)
flag = tkinter.messagebox.askokcancel('提示','转语音成功,文件地址'+filepath+'是否播放')
if flag:
playFile(filepath) def playFileB():
print('开始播放')
playFile(var_path.get()) def playFile(filepath):
os.system(filepath) def wordToFile(data,per,filepath,spd=,pit=,vol=):
result = client.synthesis(data, 'zh', , {
'vol': vol,
'spd':spd,
'pit':pit,
'per':per
})
# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
with open(filepath, 'wb') as f:
f.write(result) tk = Tk()
tk.title('文字转语音')
tk.geometry('600x400') frame = Frame(tk)
Label(tk,text='请输入文字:(最多输入500字)',width=,anchor=W, justify=LEFT).place(x=,y=)
var_ws = Variable()
wordsize = Label(tk,width=,textvariable=var_ws,anchor=W, justify=LEFT)
var_ws.set('已输入0字')
wordsize.place(x=,y=)
#输入文字
#var_word = Variable()
word_e = Text(tk,height=)
word_e.place(x=,y=) Label(tk,text='选择发音(0女声,1为男声,3为情感合成-度逍遥,4为情感合成-度丫丫)').place(x=,y=)
var_per = Variable()
e = Entry(tk, textvariable=var_per,width=)
var_per.set()
e.place(x=,y=)
Label(tk,text='输入文件路径:').place(x=,y=)
var_path = Variable()
e = Entry(tk, textvariable=var_path,width=)
var_path.set('audio.mp3')
e.place(x=,y=)
Label(tk,text='输入语速0-9:').place(x=,y=)
var_spd = Variable()
e = Entry(tk, textvariable=var_spd)
var_spd.set()
e.place(x=,y=)
Label(tk,text='输入音调0-9:').place(x=,y=)
var_pit = Variable()
e = Entry(tk, textvariable=var_pit)
var_pit.set()
e.place(x=,y=)
Label(tk,text='输入音量0-15:').place(x=,y=)
var_vol = Variable()
e = Entry(tk, textvariable=var_vol)
var_vol.set()
e.place(x=,y=)
Button(tk, text="转语音", command=wordToFileB).place(x=,y=)
Button(tk, text="播语音", command=playFileB).place(x=,y=)
tk.mainloop()

语音转文字小工具开发Python的更多相关文章

  1. WordPress小工具开发教程(网站公告)

    WordPress小工具开发教程(网站公告) BY TIANQIXIN · 2012 年 12 月 26 日   wordpress主题小工具,可以自由拖动到侧边栏,并在前台实现相应功能!一般自带的小 ...

  2. 利用ncurses库开发终端工具箱(1)—— ToDoList小工具开发

    准备工作 腾讯云服务器(Ubuntu),C++编程语言 由于想输出界面中包含中文,所以安装库 libncursesw5,依次输入下面三行命令 sudo apt-get install libncurs ...

  3. C# 小工具开发--DeBugHttp

    随着RESTful的流行,前后端分离,我们后端开发人员在开发过程中多http相关方法进行测试.这就是这个小工具的初衷. 代码地址:https://github.com/gdoujkzz/DebugHt ...

  4. Windows 桌面边栏小工具开发入门

          准备为网站做一个桌面通知功能的工具,现在网上一般是html5+js的比较多.虽然html5+js现在是web的开发主流,但是我们应用一般是windows系统.并且应使用中,需要打开谷歌或其 ...

  5. mfc小工具开发之定时闹钟之---功能介绍

    使用背景: 之前在xp上用过飞雪日历,感觉挺好用的,还有在音频上的兴趣,促使了我也要自己做一个简单的定时闹钟. 之前开发过图片格式的小工具,没来的急分享,后期整理后,一块奉上,写这篇介绍的时候已近完成 ...

  6. 【原】得心应手小工具开发——IE代理快速切换工具

    一.引入 因为公司里上外网要经常换IE代理地址,每次切换地址都要进到Internet Options里去设置一番,经常切换的话很是麻烦,由于用了点时间作个小工具来方便自己. 二.实现思路 其实思路很简 ...

  7. mfc小工具开发之定时闹钟之---二十四小时时区和时间段

    1.凌晨0:00-6:00时显示凌晨,上午6:00-12:00显示上午,中午12:00-14:00显示中午,下午14:00-显示下午,晚上18:00-24:00显示晚上 2. 早上:6-8:上午8-1 ...

  8. 自动读取虚拟币ETC行情并语音提醒的小工具(mac OSX)

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...

  9. mfc小工具开发之定时闹钟之---时间获取和音频播放

    1.这里的音频文件是指*.wav格式的音频,参考了飞雪的音频文件,版本号: 飞雪桌面日历 v2.84.1025 绿色版 http://www.piaodown.com/down/soft/18512. ...

随机推荐

  1. Windows10远程桌面连接配置

    被控电脑在TP-Link路由器 1.基本设置 被控端电脑设置:1)被控端的电脑系统需要是Windows专业版或者企业版,家庭中文版的系统是不支持远程访问功能的: 2)被控端打开远程桌面功能,在系统的设 ...

  2. nginx 负载均衡 使用ip_hash方式解决session问题 测试

    ip_hash的方式比较弱智,但是在一般情况下是挺有效的~~,如果能保证nginx是最上一层的代理,那么能够得到用户的ip是真实位置,就能做到负载,但是一家公司的所有员工其实走的是同一个ip,那么在这 ...

  3. Problem of Uninstall Cloudera: Cannot Add Hdfs and Reported Cannot Find CDH's bigtop-detect-javahome

    1. Problem We wrote a shell script to uninstall Cloudera Manager(CM) that run in a cluster with 3 li ...

  4. CodeForces 687B Remainders Game(数学,最小公倍数)

    题意:给定 n 个数,一个数 k,然后你知道一个数 x 取模这个 n 个的是几,最后问你取模 k,是几. 析:首先题意就看了好久,其实并不难,我们只要能从 n 个数的最小公倍数是 k的倍数即可,想想为 ...

  5. JQuery中button提交表单报TypeError: elem[type] is not a function jquery

    错误: TypeError: elem[type] is not a function jquery 解决: 出现这种现象的原因是,提交的表单中,有标签的name,有以submit命名的 name中不 ...

  6. Appium之uiautomator定位元素

    元素定位方式有多种,Android也有自身独有的定位方式.下面就单独介绍其基于uiautomator定位元素的方法: 基本语法: driver.find_element_by_android_uiau ...

  7. Mirth Connect的简单使用

    第一步: 切换到Channels界面,右键点击New Channel 第二步 : 上面是设置一些通道信息. 其中summary(概要) 界面主要包含 通道名称,数据类型,依赖,通道初始状态,附件(是否 ...

  8. 安装配置BITS上传服务

    IIS 6.0和IIS 7.0 支持安装BITS上传组件. 下面以IIS7.0为例安装配置bits上传服务. 1.安装 首先确定服务器已经按装IIS服务.依次打开服务管理器->功能->添加 ...

  9. solr特点二:Facet(1)

    一.   Facet 简介 Facet 是 solr 的高级搜索功能之一 , 可以给用户提供更友好的搜索体验 . 在搜索关键字的同时 , 能够按照 Facet 的字段进行分组并统计 . 二.   Fa ...

  10. .net core 自制错误日志

    前言 之前.net framework用的ErrorLog帮助类,对于监控错误形成日志,内容非常清晰,想在.net core2.2中继续用,但是有很多不一样的地方,所以想总结一下. 首先需要HttpC ...