Xidian-Debater / app.py
KashiwaByte's picture
change tts to Azure
94a764b
raw
history blame contribute delete
No virus
3.96 kB
import gradio as gr
import openai, subprocess
from pathlib import Path
import os
import azure.cognitiveservices.speech as speechsdk
# Azure tts
# This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
SPEECH_REGION='eastus'
SPEECH_KEY= 'af2d4aa2348b4b73b60487c73e0eb431'
speech_config = speechsdk.SpeechConfig(subscription='af2d4aa2348b4b73b60487c73e0eb431', region='eastus')
audio_config = speechsdk.audio.AudioOutputConfig(use_default_speaker=True)
# The language of the voice that speaks.
speech_config.speech_synthesis_voice_name=' zh-CN-XiaoxiaoNeural'
speech_synthesizer = speechsdk.SpeechSynthesizer(speech_config=speech_config, audio_config=audio_config)
# 换成你自己的api_key
openai.api_key = "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"
debatestyle = " "
messages = [{"role": "system", "content": '你是一名逻辑性很强的资深辩手,你擅长通过数据论据和学理论据来反驳,你的反驳总是一阵见血,而且很有逻辑性。接下来我会提出我的观点,你需要做的就是针锋相对地反驳我'}]
chat_transcript = ""
def transcribe(audio):
global messages
global chat_transcript
global speech_synthesizer
myfile=Path(audio)
myfile=myfile.rename(myfile.with_suffix('.wav'))
audio_file = open(myfile,"rb")
transcript = openai.Audio.transcribe("whisper-1", audio_file)
messages.append({"role": "user", "content": transcript["text"]})
response = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages)
system_message = response["choices"][0]["message"]
# print(response)
messages.append(system_message)
speech_synthesis_result = speech_synthesizer.speak_text_async(system_message['content']).get()
# 原windows tts 解决方案 subprocess.call(["wsay", system_message['content']])
chat_transcript = ""
for message in messages:
if message['role'] != 'system':
chat_transcript += message['role'] + ": " + message['content'] + "\n\n"
return chat_transcript
def eraser():
global messages
messages = [{"role": "system", "content": '你是一名逻辑性很强的资深辩手,你擅长通过数据论据和学理论据来反驳,你的反驳总是一阵见血,而且很有逻辑性。接下来我会提出我的观点,你需要做的就是针锋相对地反驳我,每次回答不超过100个字'}]
print('擦除成功✏️🧽')
def initway(api_key,style):
openai.api_key =api_key
debatestyle = style
print("初始化成功!🎉")
with gr.Blocks(css="#chatbot{height:300px} .overflow-y-auto{height:500px}") as init:
with gr.Row():
api_key = gr.Textbox(
lines=1, placeholder="api_key Here...", label="api_key",value="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")
style = gr.Textbox(
lines=1, placeholder="style Here...", label="辩风" ,value="你是一名逻辑性很强的资深辩手,你擅长通过数据论据和学理论据来反驳,你的反驳总是一阵见血,而且很有逻辑性。接下来我会提出我的观点,你需要做的就是针锋相对地反驳我,每次回答不超过100个字")
btn = gr.Button(value="初始化")
btn.click(initway, [api_key, style])
with gr.Blocks(css="#chatbot{height:300px} .overflow-y-auto{height:500px}") as Debate:
with gr.Row():
audio=gr.Audio(source="microphone", type="filepath",label="语音输入")
trans = gr.Button("🎭 转录")
output_button = gr.Button("重置🧽")
with gr.Row():
output_transcript = gr.Textbox(label="语音转录输出")
trans.click(transcribe, [audio],[output_transcript])
output_button.click(eraser)
test=gr.Interface(fn=transcribe, inputs=gr.Audio(source="microphone", type="filepath"), outputs="text")
ui = gr.TabbedInterface([init,Debate,test],["初始化","辩论","测试"])
ui.launch()