rein0421 commited on
Commit
9b5ea70
·
verified ·
1 Parent(s): c50bef0

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +163 -10
README.md CHANGED
@@ -1,10 +1,163 @@
1
- ---
2
- title: JusTalk
3
- emoji: ⚡
4
- colorFrom: gray
5
- colorTo: blue
6
- sdk: docker
7
- pinned: false
8
- ---
9
-
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: JusTalk
3
+ emoji: ⚡
4
+ colorFrom: gray
5
+ colorTo: blue
6
+ sdk: docker
7
+ pinned: false
8
+ ---
9
+
10
+
11
+ ---
12
+
13
+ ## グローバル変数と主要な設定
14
+
15
+ - **`users`**
16
+ 登録されたユーザー名のリスト。
17
+ - **`transcription_text`**
18
+ 音声から作成された書き起こしのファイルパスまたは内容。
19
+ - **`total_audio`**
20
+ 音声セグメントをマージした結果の音声ファイルパス。
21
+ - **`harassment_keywords`**
22
+ ハラスメントとして検出するキーワードのリスト(例:"バカ", "死ね" など)。
23
+
24
+ また、外部ライブラリとして `pydub`、および独自の `AudioProcessor`、`TranscriptionMaker`、`TextAnalyzer` を用いて音声処理や解析を行います。
25
+
26
+ ---
27
+
28
+ ## 各エンドポイントの概要
29
+
30
+ ### 1. トップページ/ユーザー登録画面
31
+
32
+ - **URL:** `/index`
33
+ **メソッド:** GET, POST
34
+ **機能:**
35
+ - テンプレート `index.html` を表示。
36
+ - 現在の `users` リストをテンプレートに渡す。
37
+
38
+ - **URL:** `/` または `/userregister`
39
+ **メソッド:** GET, POST
40
+ **機能:**
41
+ - ユーザー登録用の画面を表示するため、`userRegister.html` テンプレートを返す。
42
+
43
+ ---
44
+
45
+ ### 2. フィードバックおよび会話詳細画面
46
+
47
+ - **URL:** `/feedback`
48
+ **メソッド:** GET, POST
49
+ **機能:**
50
+ - フィードバック画面(テンプレート:`feedback.html`)を表示。
51
+
52
+ - **URL:** `/talk_detail`
53
+ **メソッド:** GET, POST
54
+ **機能:**
55
+ - 会話の詳細を表示する画面(テンプレート:`talkDetail.html`)を返す。
56
+
57
+ ---
58
+
59
+ ### 3. ユーザーとファイルのリセット関連
60
+
61
+ - **URL:** `/reset_html`
62
+ **メソッド:** GET, POST
63
+ **機能:**
64
+ - リセット画面(テンプレート:`reset.html`)を表示。
65
+
66
+ - **URL:** `/reset_member`
67
+ **メソッド:** GET, POST
68
+ **機能:**
69
+ - 指定されたメンバー(ユーザー)とその関連の参照音声ファイルを削除する。
70
+ - リクエストボディ内で `"names"` キーが必須。
71
+ - `/tmp/data/base_audio` 内の各ユーザーの音声ファイル(`{name}.wav`)を削除。
72
+ - 削除後、`users` リストから対象ユーザーを除外する。
73
+ - 加えて、累積音声ファイル(`total_audio`)や、書き起こしファイル(`transcription_text`)も削除する処理を実施。
74
+
75
+ - **URL:** `/reset`
76
+ **メソッド:** GET
77
+ **機能:**
78
+ - `users` リストを空にリセットし、成功レスポンスを返す。
79
+
80
+ ---
81
+
82
+ ### 4. 状態確認エンドポイント
83
+
84
+ - **URL:** `/confirm`
85
+ **メソッド:** GET
86
+ **機能:**
87
+ - 現在登録されているメンバー(`users`)を JSON 形式で返す。
88
+
89
+ ---
90
+
91
+ ### 5. 音声アップロード・解析関連
92
+
93
+ #### a. 基本の音声アップロードと参照音声との照合
94
+
95
+ - **URL:** `/upload_audio`
96
+ **メソッド:** POST
97
+ **機能:**
98
+ - クライアントから受け取った Base64 形式の音声データをデコードし、一時ファイル(`/tmp/data/tmp.wav`)として保存。
99
+ - リクエストボディ内には、`audio_data` とともに、`name` または `users`(登録済みユーザーの情報)が必要。
100
+ - 各ユーザーの参照音声ファイル(`/tmp/data/base_audio/{user}.wav`)とアップロードされた音声を比較し、
101
+ - 複数ユーザーの場合:`process_multi_audio` を使用して各ユーザー毎の一致時間を計算し、その比率(パーセンテージ)を返す。
102
+ - 単一ユーザーの場合:`process_audio` を用いて一致時間と非一致時間から比率(パーセンテージ)を計算して返す。
103
+ - また、処理後に複数の音声セグメントをマージし、その結果を `total_audio` に格納する。
104
+
105
+ #### b. 基準音声のアップロード(ユーザー登録時に使用)
106
+
107
+ - **URL:** `/upload_base_audio`
108
+ **メソッド:** POST
109
+ **機能:**
110
+ - リクエストボディ内の `audio_data`(Base64形式)と `name` を受け取り、
111
+ - `users` リストに名前を追加(重複排除を実施)。
112
+ - `/tmp/data/base_audio/` 内に、`{name}.wav` という名前で保存。
113
+ - 登録成功時に、状態とファイルパスを返す。
114
+
115
+ ---
116
+
117
+ ### 6. 書き起こし生成およびテキスト解析
118
+
119
+ #### a. 書き起こし作成
120
+
121
+ - **URL:** `/transcription`
122
+ **メソッド:** GET, POST
123
+ **機能:**
124
+ - グローバル変数 `transcription_text` に書き起こし済みのファイルが存在しない場合、
125
+ - `total_audio`(マージ済み音声ファイル)が存在しているかをチェック。
126
+ - `TranscriptionMaker` の `merge_segments` メソッドでセグメントをマージし、`create_transcription` で書き起こしファイルを生成。
127
+ - 書き起こしファイルを読み込み、内容を JSON 形式で返す。
128
+ - エラー発生時には適切な HTTP ステータスコード(400, 404, 500)とエラーメッセージを返す。
129
+
130
+ #### b. AI によるテキスト解析
131
+
132
+ - **URL:** `/analyze`
133
+ **メソッド:** GET, POST
134
+ **機能:**
135
+ - `/transcription` と同様に、書き起こしファイルの存在を確認し、必要なら再生成する。
136
+ - `TextAnalyzer` クラスを使って、書き起こしテキストとハラスメントキーワードをもとに解析を実施。
137
+ - 環境変数 `DEEPSEEK` を API キーとして取得し、DeepSeek 解析を呼び出す。
138
+ - 解析結果(会話レベル、ハラスメントの有無や種類、繰り返しの程度、会話の心地よさ、非難やハラスメントの程度など)をコンソール出力し、JSON 形式で返す。
139
+
140
+ ---
141
+
142
+ ## エンドポイント間の流れとポイント
143
+
144
+ - **ユーザー登録:**
145
+ `/upload_base_audio` でユーザーごとの基準音声を登録し、`users` リストに名前を追加。
146
+
147
+ - **音声解析:**
148
+ `/upload_audio` によりアップロードされた音声を、登録された参照音声と照合。
149
+ - 複数ユーザーの場合、各ユーザーの一致時間を計算し、パーセンテージとして返す。
150
+ - 単一ユーザーの場合、一致時間と非一致時間から比率を返す。
151
+ - この段階で、音声セグメントをマージし、後続の書き起こし・解析に利用するために `total_audio` に格納。
152
+
153
+ - **書き起こしの生成と利用:**
154
+ `/transcription` で `total_audio` から書き起こしファイルを生成し、その内容を取得可能。
155
+ `/analyze` では、生成済みの書き起こしテキストをもとに、DeepSeek API を用いた AI 解析が実行される。
156
+
157
+ - **リセット機能:**
158
+ `/reset_member` で指定ユーザーの音声ファイル、累積音声、書き起こしファイルを削除。
159
+ `/reset` で `users` リストを完全にクリアする。
160
+
161
+ ---
162
+
163
+