You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
import tkinter as tk
|
|
|
|
|
from tkinter import ttk
|
|
|
|
|
import pyttsx3
|
|
|
|
|
import speech_recognition as sr
|
|
|
|
|
from flask import Flask, request, jsonify
|
|
|
|
|
|
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
|
|
|
|
@app.route('/api/login', methods=['POST'])
|
|
|
|
|
def login():
|
|
|
|
|
username = request.json.get('username')
|
|
|
|
|
password = request.json.get('password')
|
|
|
|
|
|
|
|
|
|
# 这里应该替换为实际的用户验证逻辑,比如查询数据库
|
|
|
|
|
if username == 'abc' and password == '123':
|
|
|
|
|
return jsonify({"success": True, "message": "登录成功"})
|
|
|
|
|
else:
|
|
|
|
|
return jsonify({"success": False, "message": "用户名或密码错误"}), 401
|
|
|
|
|
|
|
|
|
|
def text_to_speech():
|
|
|
|
|
engine = pyttsx3.init()
|
|
|
|
|
text = text_entry.get("1.0", "end-1c") # 获取文本框中的文本
|
|
|
|
|
engine.say(text)
|
|
|
|
|
engine.runAndWait()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
|
global text_entry
|
|
|
|
|
|
|
|
|
|
# 创建主窗口
|
|
|
|
|
app = tk.Tk()
|
|
|
|
|
app.title("文本转语音")
|
|
|
|
|
|
|
|
|
|
speed_slider = ttk.Scale(app, from_=50, to=200, orient=tk.HORIZONTAL)
|
|
|
|
|
speed_slider.set(120) # 默认语速
|
|
|
|
|
speed_slider.pack()
|
|
|
|
|
|
|
|
|
|
# 创建一个标签,用于提示输入文本
|
|
|
|
|
label = tk.Label(app, text="请输入文字:")
|
|
|
|
|
label.pack(pady=10)
|
|
|
|
|
|
|
|
|
|
# 创建一个文本框,用于用户输入
|
|
|
|
|
text_entry = tk.Text(app, height=10)
|
|
|
|
|
text_entry.pack()
|
|
|
|
|
|
|
|
|
|
# 创建一个按钮,点击时调用text_to_speech函数
|
|
|
|
|
convert_button = tk.Button(app, text="识别", command=text_to_speech)
|
|
|
|
|
convert_button.pack(pady=10)
|
|
|
|
|
|
|
|
|
|
# 运行主循环
|
|
|
|
|
app.mainloop()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
main()
|
|
|
|
|
app.run(debug=True)
|