File size: 5,021 Bytes
ae9ec05
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# 2인 대화 STT 처리기 (AI 화자 분리)

Whisper STT + Gemini AI를 결합하여 오디오 파일을 텍스트로 변환하고 화자별로 자동 분리하는 애플리케이션입니다.

## 주요 기능

1. **WAV 파일 자동 감지**: data 폴더의 모든 WAV 파일을 자동으로 감지
2. **고정밀 음성 인식**: OpenAI Whisper를 사용한 음성-텍스트 변환
3. **AI 화자 분리**: Google Gemini를 사용한 텍스트 기반 2인 대화 분리
4. **결과 저장**: 
   - 전체 대화 (원본 + 화자 분리)
   - 화자별 개별 대화
   - JSON 형태 상세 데이터

## 기술 스택

- **UI Framework**: tkinter (Python GUI)
- **음성 인식**: OpenAI Whisper
- **AI 화자 분리**: Google Gemini Pro
- **로깅**: Python logging

## 폴더 구조

```
sttUsingAPI/
├── data/           # WAV 파일을 여기에 넣으세요
├── output/         # 처리 결과가 저장됩니다
├── logs/           # 로그 파일이 저장됩니다
├── .env            # API 키 설정
├── audio_summarizer.py  # 메인 애플리케이션
└── test_stt.py     # 테스트 스크립트
```

## 설치 및 설정

### 1. 의존성 설치

```bash
pip install torch torchaudio python-dotenv google-generativeai
pip install git+https://github.com/openai/whisper.git
```

### 2. API 키 설정

`.env` 파일에 Google AI API 키를 설정하세요:

```env
# Google AI API 키 (https://aistudio.google.com/app/apikey)
GOOGLE_API_KEY=your_google_api_key_here
```

### 3. WAV 파일 준비

처리할 WAV 파일을 `data/` 폴더에 넣으세요.

### 4. 실행

```bash
# GUI 애플리케이션
python audio_summarizer.py

# 또는 테스트 스크립트
python test_stt.py
```

## 사용 방법

1. 애플리케이션 실행
2. `.env` 파일에 Google API 키 설정 확인
3. WAV 파일이 `data/` 폴더에 있는지 확인
4. "파일 목록 새로고침" 버튼으로 파일 목록 업데이트
5. 개별 파일 처리: 파일 선택 후 "선택된 파일 처리" 클릭
6. 전체 파일 처리: "모든 파일 처리" 클릭
7. `output/` 폴더에서 결과 확인

## 처리 과정

1. **음성 인식**: Whisper가 WAV 파일을 텍스트로 변환
2. **화자 분리**: Gemini가 텍스트 분석으로 화자별 발언 구분
3. **결과 저장**: 다양한 형태로 결과 파일 생성

## 출력 파일 형식

각 WAV 파일에 대해 다음 파일들이 생성됩니다:

- `{파일명}_전체대화_{타임스탬프}.txt`: 원본 + 화자 분리 결과
- `{파일명}_화자1_{타임스탬프}.txt`: 화자1의 발언만
- `{파일명}_화자2_{타임스탬프}.txt`: 화자2의 발언만
- `{파일명}_data_{타임스탬프}.json`: JSON 형태 상세 데이터

### 화자 분리 결과 예시

```
원본 텍스트:
안녕하세요, 오늘 회의에 참석해주셔서 감사합니다. 네, 안녕하세요. 준비된 자료가 있나요? 네, 프레젠테이션 자료를 준비했습니다.

화자별 분리 결과:
[화자1] 안녕하세요, 오늘 회의에 참석해주셔서 감사합니다.
[화자2] 네, 안녕하세요. 준비된 자료가 있나요?
[화자1] 네, 프레젠테이션 자료를 준비했습니다.
```

## API 키 발급

### Google AI API 키
1. [Google AI Studio](https://aistudio.google.com/app/apikey) 방문
2. 구글 계정으로 로그인
3. "Create API Key" 클릭
4. 생성된 키를 `.env` 파일에 추가

## 로그

- 모든 처리 과정과 오류는 `logs/stt_processor.log` 파일에 기록됩니다.

## 화자 분리 정확도

Gemini AI의 텍스트 기반 화자 분리는 다음 요소들을 분석합니다:

- **대화 맥락**: 질문과 답변의 패턴
- **말투 변화**: 존댓말/반말, 어조 변화
- **주제 전환**: 화자별 관심사나 역할
- **언어 패턴**: 개인별 표현 습관

## 주의사항

- WAV 형식의 오디오 파일만 지원됩니다.
- 최초 실행 시 Whisper 모델 다운로드로 인해 시간이 소요될 수 있습니다.
- 인터넷 연결이 필요합니다 (모델 다운로드 및 API 호출).
- Google AI API 사용량에 따라 비용이 발생할 수 있습니다.
- 2인 대화에 최적화되어 있습니다.

## 화자 분리 정확도 향상 팁

1. **명확한 역할 구분**: 인터뷰어-인터뷰이, 강사-학생 등
2. **대화 흐름**: 자연스러운 질문과 답변 형태
3. **말투 차이**: 존댓말/반말, 전문용어 사용 차이
4. **음질**: 깨끗하고 명확한 음성
5. **화자 간 중복 발언 최소화**: 동시에 말하는 구간 최소화

## 문제 해결

### API 키 오류
- `.env` 파일에 올바른 Google AI API 키가 설정되어 있는지 확인
- API 키의 권한 및 할당량 확인

### 화자 분리 정확도 문제
- 대화 내용이 너무 짧거나 단조로운 경우 정확도 저하 가능
- 두 명 이상의 화자가 있는 경우 부정확할 수 있음

### 모델 로딩 오류
- 인터넷 연결 상태 확인
- 가상환경 및 패키지 설치 상태 확인