Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import fal_client | |
| import os | |
| import replicate | |
| os.environ["REPLICATE_API_TOKEN"] = "r8_FkexLJNot1RYg0mF1NDEHU4vZZMGL8G1oF3pK" | |
| os.environ["FAL_KEY"] = "f202d2e1-aa0c-4b77-9949-3178755202f3:c83c90ba842d66be7cd1cef970a2e3e0" | |
| def on_queue_update(update): | |
| if isinstance(update, fal_client.InProgress): | |
| for log in update.logs: | |
| print(log["message"]) | |
| def transcribe_with_fal(audio_path): | |
| try: | |
| # Upload audio file to FAL API | |
| url = fal_client.upload_file(audio_path) | |
| # Call FAL API for speech-to-text | |
| result = fal_client.subscribe( | |
| "fal-ai/elevenlabs/speech-to-text", | |
| arguments={"audio_url": url}, | |
| with_logs=True, | |
| on_queue_update=on_queue_update, | |
| ) | |
| # Get transcribed text from FAL | |
| content = result['text'] | |
| # Prepare the input for LLM (Replicate) | |
| input = { | |
| "prompt": "Tóm tắt nội dung dưới đây bằng tiếng Việt theo các mục sau: - Chủ đề chính - Các vấn đề đã được thảo luận - Các quyết định đã đưa ra - Người chịu trách nhiệm cho các hành động tiếp theo - Thời hạn hoặc thời gian dự kiến cho các hành động Nội dung cuộc họp: '{}'".format(content), | |
| "max_tokens" : 16000 | |
| } | |
| # Call LLM for summarization | |
| output = replicate.run( | |
| "lucataco/qwq-32b:5a9425923f3ef1101dc663609a80cbd597dea6554a6b0c06483b949cb72603ed", | |
| input=input | |
| ) | |
| # Return both transcribed text and summary | |
| return content, "".join(output) | |
| except Exception as e: | |
| return f"❌ Lỗi: {str(e)}", "" | |
| # Create Gradio Interface | |
| demo = gr.Interface( | |
| fn=transcribe_with_fal, | |
| inputs=gr.Audio(type="filepath", label="Upload file âm thanh"), | |
| outputs=[ | |
| gr.Textbox(label="Text từ Speech-to-Text"), | |
| gr.Textbox(label="Tóm tắt nội dung cuộc họp") | |
| ], | |
| title="xmind lab" | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |