# -*- 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. day24,python习题

    今日作业 有两个列表,分别存放来老男孩报名学习linux和python课程的学生名字 linux=['钢弹','小壁虎','小虎比','alex','wupeiqi','yuanhao'] pytho ...

  2. 01 Flume系列(一)安装配置

    01 Flume系列(一)安装配置 Flume(http://flume.apache.org/) is a distributed, reliable, and available service ...

  3. Button或者ImageButton的背景设为透明或者半透明

    Button或者ImageButton的背景设为透明或者半透明 半透明<Button android:background="#e0000000" ... /> 透明& ...

  4. SpringBoot2.0WebFlux响应式编程知识总结

  5. .NET基础 (16)事件

    事件1 请解释事件的基本使用方法2 事件和委托有何联系3 如何设计一个带有很多事件的类型4 用代码表示如下情景:猫叫.老鼠逃跑.主人惊醒 事件1 请解释事件的基本使用方法 事件时一种使对象或类能够提供 ...

  6. CodeForces - 468A ——(思维题)

    Little X used to play a card game called "24 Game", but recently he has found it too easy. ...

  7. 初识Java微信公众号开发

    选定类型后不可更改 企业号与服务号,订阅号的区别 公众号微信注册流程: 个人就选择订阅号 外网映射 必须要使用映射工具将本地的地址映射到公网上去 介绍一个ngrok 首先下载ngork,例如保存在D盘 ...

  8. Python验证实现登陆功能以及用户锁定(文件存储)

    废话不多说先交代码(只是一个简单的验证):#!/usr/bin/env python #-*- coding:utf8 -*- # Structured program ‘#’是注释 # Functi ...

  9. 不用外部插件启用u盘ntfs写功能

    mac下启用NTFS u盘读写功能. 不用要任何外部插件,其实mac本来就支持,只是因为专利原因隐藏了而已. macbook:~ uwe$ sudo umount /Volumes/UNTITLED ...

  10. 关于onetoone 的2张表关联中间表的策略

    ProductCategoryVO.java 中间关联表 package com.syscxp.header.billing; import com.syscxp.header.search.SqlT ...