Spaces:
Runtime error
Runtime error
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() |