Spaces:
Runtime error
Runtime error
Upload app.py
Browse files
app.py
CHANGED
|
@@ -4,14 +4,11 @@ from pydub import AudioSegment # 変換用にpydubをインポート
|
|
| 4 |
import os
|
| 5 |
import shutil
|
| 6 |
from process import AudioProcessor
|
| 7 |
-
from transcription import TranscriptionMaker
|
| 8 |
|
| 9 |
process=AudioProcessor()
|
| 10 |
-
transcription = TranscriptionMaker()
|
| 11 |
app = Flask(__name__)
|
| 12 |
|
| 13 |
users = []
|
| 14 |
-
segments_dir = ""
|
| 15 |
|
| 16 |
# トップページ(テンプレート: index.html)
|
| 17 |
@app.route('/')
|
|
@@ -24,6 +21,7 @@ def index():
|
|
| 24 |
def feedback():
|
| 25 |
return render_template('feedback.html')
|
| 26 |
|
|
|
|
| 27 |
# 会話詳細画面(テンプレート: talkDetail.html)
|
| 28 |
@app.route('/talk_detail', methods=['GET', 'POST'])
|
| 29 |
def talk_detail():
|
|
@@ -38,17 +36,11 @@ def userregister():
|
|
| 38 |
def confirm():
|
| 39 |
return jsonify({'members': users}), 200
|
| 40 |
|
| 41 |
-
|
| 42 |
-
@app.route('/transcription',methods =['GET','POST'])
|
| 43 |
-
def transcription():
|
| 44 |
-
global segments_dir
|
| 45 |
-
text = transcription.create_transcription(segments_dir)
|
| 46 |
-
return jsonify({'transcription': text}),200
|
| 47 |
|
| 48 |
# 音声アップロード&解析エンドポイント
|
| 49 |
@app.route('/upload_audio', methods=['POST'])
|
| 50 |
def upload_audio():
|
| 51 |
-
global segments_dir
|
| 52 |
try:
|
| 53 |
data = request.get_json()
|
| 54 |
# name か users のいずれかが必須。どちらも無い場合はエラー
|
|
@@ -58,8 +50,6 @@ def upload_audio():
|
|
| 58 |
# Base64デコードして音声バイナリを取得
|
| 59 |
audio_binary = base64.b64decode(data['audio_data'])
|
| 60 |
|
| 61 |
-
|
| 62 |
-
|
| 63 |
upload_name = 'tmp'
|
| 64 |
audio_dir = "/tmp/data"
|
| 65 |
os.makedirs(audio_dir, exist_ok=True)
|
|
@@ -79,13 +69,16 @@ def upload_audio():
|
|
| 79 |
# 複数人の場合は参照パスのリストを、1人の場合は単一のパスを渡す
|
| 80 |
if len(users) > 1:
|
| 81 |
print("複数人の場合の処理")
|
| 82 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 83 |
else:
|
| 84 |
-
matched_time, unmatched_time
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
return jsonify({"rate": rate}), 200
|
| 89 |
except Exception as e:
|
| 90 |
print("Error in /upload_audio:", str(e))
|
| 91 |
return jsonify({"error": "サーバーエラー", "details": str(e)}), 500
|
|
|
|
| 4 |
import os
|
| 5 |
import shutil
|
| 6 |
from process import AudioProcessor
|
|
|
|
| 7 |
|
| 8 |
process=AudioProcessor()
|
|
|
|
| 9 |
app = Flask(__name__)
|
| 10 |
|
| 11 |
users = []
|
|
|
|
| 12 |
|
| 13 |
# トップページ(テンプレート: index.html)
|
| 14 |
@app.route('/')
|
|
|
|
| 21 |
def feedback():
|
| 22 |
return render_template('feedback.html')
|
| 23 |
|
| 24 |
+
|
| 25 |
# 会話詳細画面(テンプレート: talkDetail.html)
|
| 26 |
@app.route('/talk_detail', methods=['GET', 'POST'])
|
| 27 |
def talk_detail():
|
|
|
|
| 36 |
def confirm():
|
| 37 |
return jsonify({'members': users}), 200
|
| 38 |
|
| 39 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 40 |
|
| 41 |
# 音声アップロード&解析エンドポイント
|
| 42 |
@app.route('/upload_audio', methods=['POST'])
|
| 43 |
def upload_audio():
|
|
|
|
| 44 |
try:
|
| 45 |
data = request.get_json()
|
| 46 |
# name か users のいずれかが必須。どちらも無い場合はエラー
|
|
|
|
| 50 |
# Base64デコードして音声バイナリを取得
|
| 51 |
audio_binary = base64.b64decode(data['audio_data'])
|
| 52 |
|
|
|
|
|
|
|
| 53 |
upload_name = 'tmp'
|
| 54 |
audio_dir = "/tmp/data"
|
| 55 |
os.makedirs(audio_dir, exist_ok=True)
|
|
|
|
| 69 |
# 複数人の場合は参照パスのリストを、1人の場合は単一のパスを渡す
|
| 70 |
if len(users) > 1:
|
| 71 |
print("複数人の場合の処理")
|
| 72 |
+
matched_times = process.process_multi_audio(reference_paths, audio_path, threshold=0.05)
|
| 73 |
+
# 各メンバーのrateを計算
|
| 74 |
+
total_time = sum(matched_times)
|
| 75 |
+
rates = [(time / total_time) * 100 if total_time > 0 else 0 for time in matched_times]
|
| 76 |
+
return jsonify({"rates": rates}), 200
|
| 77 |
else:
|
| 78 |
+
matched_time, unmatched_time = process.process_audio(reference_paths[0], audio_path, threshold=0.05)
|
| 79 |
+
total_time = matched_time + unmatched_time
|
| 80 |
+
rate = (matched_time / total_time) * 100 if total_time > 0 else 0
|
| 81 |
+
return jsonify({"rate": rate}), 200
|
|
|
|
| 82 |
except Exception as e:
|
| 83 |
print("Error in /upload_audio:", str(e))
|
| 84 |
return jsonify({"error": "サーバーエラー", "details": str(e)}), 500
|