Sakalti commited on
Commit
0a28b2f
·
verified ·
1 Parent(s): 5bf9513

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +61 -0
app.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import AutoModelForCausalLM, AutoTokenizer
3
+ import torch
4
+ from gtts import gTTS
5
+
6
+ # Qwenモデルの読み込み
7
+ tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-1.5B-Instruct")
8
+ model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-1.5B-Instruct")
9
+
10
+ # モデルがテキストを生成する関数
11
+ def generate_text(prompt, max_length, temperature, top_p):
12
+ inputs = tokenizer(prompt, return_tensors="pt")
13
+ outputs = model.generate(
14
+ **inputs,
15
+ max_length=max_length,
16
+ temperature=temperature,
17
+ top_p=top_p,
18
+ do_sample=True
19
+ )
20
+ generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
21
+ return generated_text
22
+
23
+ # テキストを音声に変換する関数
24
+ def text_to_speech(text):
25
+ tts = gTTS(text=text, lang='ja')
26
+ file_path = "output.mp3"
27
+ tts.save(file_path)
28
+ return file_path
29
+
30
+ # モデルの出力と音声変換を組み合わせた関数
31
+ def generate_and_speak(prompt, max_length, temperature, top_p):
32
+ generated_text = generate_text(prompt, max_length, temperature, top_p)
33
+ speech_file = text_to_speech(generated_text)
34
+ return generated_text, speech_file
35
+
36
+ # Gradioインターフェースの作成
37
+ with gr.Blocks() as demo:
38
+ # 入力欄(プロンプト、長さ、温度、Top-p)
39
+ prompt = gr.Textbox(label="プロンプトを入力してください")
40
+ max_length = gr.Slider(10, 1000, value=100, step=10, label="最大長")
41
+ temperature = gr.Slider(0.1, 1.0, value=0.7, step=0.1, label="生成温度")
42
+ top_p = gr.Slider(0.0, 1.0, value=0.9, step=0.1, label="Top-p")
43
+
44
+ # 出力欄(生成されたテキストと音声ファイル)
45
+ generated_text_output = gr.Textbox(label="生成されたテキスト")
46
+ audio_output = gr.Audio(label="生成された音声")
47
+
48
+ # ボタン(生成ボタンとクリアボタン)
49
+ generate_button = gr.Button("生成")
50
+ clear_button = gr.Button("クリア")
51
+
52
+ # ボタンが押されたときのアクション
53
+ generate_button.click(generate_and_speak,
54
+ inputs=[prompt, max_length, temperature, top_p],
55
+ outputs=[generated_text_output, audio_output])
56
+
57
+ # クリアボタンの機能
58
+ clear_button.click(lambda: ("", None), None, [prompt, generated_text_output, audio_output])
59
+
60
+ # インターフェースの起動
61
+ demo.launch()