회의록 (Meeting Minutes)
회의에 참석하지 못한 사람도 신뢰할 수 있는 회의록을 생성합니다. 모든 발언은 녹음 파일로 추적 가능하며, 각 화자 레이블은 그 확실성에 대해 정직하게 표시됩니다.
녹음 파일이 진실의 원천(Source of Truth)입니다. 전사본(Transcript)은 증거이며, 회의록은 그 증거에 대한 해석입니다. 회의 봇이나 참석자가 작성한 메모는 부차적인 자료로, 교차 검증 목적으로만 사용합니다.
작동 모드 (Operating modes)
이 스킬을 로드한다고 해서 전체 실행이 승인되는 것은 아닙니다. 요청에 가장 적합한 최소 모드를 선택하세요.
- 안내 모드 (Guidance mode): 전사 방법, 특정 기기에 적합한 모델, 화자 레이블이 잘못된 이유, 기존 전사본을 읽는 방법 등에 대한 질문에 답변합니다. 관련 파일에서 정보를 찾아 답하며, 아무것도 설치하거나 파일을 생성하지 않습니다.
- 전사 모드 (Transcript mode): 사용자가 텍스트만을 원합니다. 설정(setup), 전사(transcription), 그리고 (거절하지 않은 경우) 화자 분리(speaker separation)를 실행합니다. 화자 레이블이 지정된 전사본이 생성된 후 중단됩니다.
- 회의록 모드 (Minutes mode): 사용자가 회의록을 원합니다. 모든 단계를 실행하고 "출력물(Outputs)"에 나열된 파일을 작성합니다.
요청이 두 가지 이상의 모드에 해당할 수 있다면, 아무것도 설치하기 전에 짧은 질문을 하나 하세요.
플랫폼 용어 (Platform terminology)
이 스킬은 특정 에이전트에 종속되지 않습니다.
- Shell은 플랫폼이 사용자 컴퓨터에서 명령어를 실행하는 데 사용하는 것입니다.
- Background run은 플랫폼이 긴 명령을 시작하고 종료 시 알림을 받는 방식입니다. 이것이 없으면 명령을 포그라운드에서 실행하고 사용자에게 예상 시간을 알려줍니다.
- **환경 (Environment)**은 이 스킬이 한 번 생성한 후 재사용하는 Python 환경입니다.
<python>은 그 인터프리터입니다. - **참조 스크립트 (Reference script)**는 이 파일들에 있는 코드 블록입니다.
<out>/work/에 저장하고<python>으로 실행합니다. 이것은 테스트된 시작점이지 고정된 계약이 아닙니다: 기기, 라이브러리 버전, 또는 요청에 따라 필요하면 이를 조정하고 무엇을 변경했는지 설명합니다.
원칙 (Principles)
- 오디오는 로컬에 유지됩니다. 녹음 파일이나 그 일부를 원격 서비스에 업로드하지 마십시오. 전사(transcription)와 화자 분리(speaker separation)는 이 컴퓨터에서 실행됩니다.
- 텍스트가 어디로 가는지 투명하게 알리십시오. 전사본은 텍스트이며, 회의록을 작성하는 에이전트가 이를 읽습니다. 그 에이전트가 클라우드 모델이라면 텍스트가 해당 제공자에게 전송됩니다. 회의가 민감할 수 있는 경우 첫 실행 전에 한 번 이 사실을 알리십시오.
- 오직 말해진 내용만. 회의록은 전사본이 뒷받침하는 내용만 포함합니다. 지어낸 소유자, 날짜, 숫자 또는 결정은 없습니다.
- 정직한 화자 레이블. 숫자는 증거가 있을 때만 이름이 됩니다. 추측은 추측으로 표시됩니다.
- 한 번에 하나의 무거운 작업, 낮은 우선순위로. 음성 모델은 전체 머신을 사용합니다. 전사(transcription)와 화자 분리(speaker separation)를 동시에 실행하지 마십시오. 느려도 괜찮습니다. 사용자는 여전히 이 컴퓨터에서 작업해야 합니다.
- 설치 전에 물어보고, 비밀번호를 절대 처리하지 마십시오. 프로그램을 설치하기 전에 명령어를 보여주십시오. 사용자가 로그인하고, 모델 이용 약관에 동의하며, 토큰을 저장합니다. 대화 중에 비밀번호나 토큰을 요구하지 마십시오.
- 인식 오류는 예상됩니다. 이름, 숫자, 전문 용어가 취약점입니다. 매끄럽게 수정하는 대신 중요한 것은 검증하십시오.
설정 값 (Setup values)
첫 번째 단계 전에 이 값들을 확인하십시오. 사용자에게 직접 알 수 없는 것만 물어보십시오.
- 스킬 디렉토리: 이
SKILL.md가 포함된 절대 경로. - 녹음 파일: 오디오 또는 비디오 파일의 절대 경로.
- 출력 디렉토리
<out>: 기본값은 녹음 파일 옆에 새 폴더로, 녹음 파일 이름에-minutes를 붙여서 만듭니다. 사용자가 다른 위치를 지정하거나 녹음 파일이 작업 파일이 속하지 않는 동기화/공유 폴더에 있을 경우 다른 장소를 사용합니다. - 언어: 물어보거나 모델이 자동 감지하도록 합니다.
- 참석자: 이름, 알고 있다면 팀이나 역할. 화자에게 이름을 붙이고 회의록 헤더에 필요합니다. 사용자가 모르는 경우 번호가 매겨진 화자로 진행합니다.
- 제목, 날짜와 시간, 목적: 헤더용입니다. 사용자 또는 파일명과 메타데이터에서 가져오고, 추측으로 생성하지 마십시오.
출력물 (Outputs)
모든 경로는 <out> 내부에 있습니다.
| 파일 | 작성 시점 | 내용 |
|---|---|---|
transcript.json | 2단계 | 단어 수준 타임스탬프가 포함된 세그먼트. 이후 절대 수정되지 않음 |
transcript.txt | 2단계 | 동일한 텍스트, 세그먼트당 타임스탬프가 포함된 한 줄. 수정되지 않은 기록 |
diarization.json | 3단계 | 누가 언제 말했는지, 화자는 1번부터 번호 매겨짐 |
speakers.json | 4단계 | 화자 번호와 이름 매핑, 불확실성 표시 포함 |
corrections.tsv | 4단계 | 반복되는 인식 오류와 그 수정 사항 |
transcript-speakers.txt | 4단계 | 화자 레이블이 지정되고 수정된 전사본. 회의록의 기초 |
minutes.md | 5단계 | 회의록. 화자 레이블이 지정된 전사본이 부록으로 포함됨 |
work/ | 전체 | 실행된 참조 스크립트와 로그 |
워크플로우 (Workflow)
| 단계 | 참고 문서 | 결과 |
|---|---|---|
| 1. 설정 (Setup) | SETUP.md | 작동하는 환경, GPU 또는 CPU 결정, 화자 분리 여부 결정 |
| 2. 전사 (Transcription) | TRANSCRIPTION.md | transcript.json, transcript.txt |
| 3. 화자 분리 (Speaker separation) | DIARIZATION.md | diarization.json |
| 4. 화자 및 수정 (Speakers and corrections) | SPEAKERS.md | speakers.json, corrections.tsv, transcript-speakers.txt |
| 5. 회의록 (Minutes) | MINUTES.md | minutes.md |
1단계는 컴퓨터당 한 번 수행되며, 이후 실행에서는 검증만 합니다. 2단계와 3단계는 시간이 오래 걸리므로 백그라운드 실행을 사용하고 종료 시 계속 진행합니다. 3단계는 사용자가 일회성 모델 접근을 거부할 경우 건너뜁니다. 나머지 작업은 이름 없이도 계속 작동합니다.
각 단계의 결과를 확인한 후 다음 단계를 시작하십시오. 각 파일은 "확인 (Check)" 섹션으로 끝납니다.
사용자에게 보고 (Reporting to the user)
실행이 종료되면 사용자에게 다음을 알리십시오:
minutes.md의 위치;- 확인된 화자 이름과 추측에 불과한 화자 이름;
- 기본값에서 건너뛰거나 변경된 사항과 그 이유;
- 이번 실행의 알려진 약점 (불명확한 이름이나 숫자, 겹치는 음성, 음질이 좋지 않은 구간).
안티패턴 (Anti-patterns)
- 녹음 파일이 있을 때 회의 봇이 작성한 메모를 요약하는 것. 이러한 메모는 회의의 일부 구간을 생략하고 모든 목소리를 하나로 합칩니다.
- "시간을 절약"하기 위해 전사(transcription)와 화자 분리(speaker separation)를 동시에 실행하는 것. 둘 다 느려지고 GPU 메모리가 고갈될 수 있습니다.
- 음성 모델에 참석자 이름 목록을 힌트로 제공하는 것. 그러면 모델이 조용한 구간에 그 이름들을 적어 넣고 실제 발화를 놓칠 수 있습니다.
- 이름이 "어울린다"는 이유로 화자 이름을 지정하는 것. 공유된 회의록에서 잘못된 귀속 한 번은 "화자 3"이라는 레이블 열 개보다 더 큰 피해를 줍니다.
- 문장을 다시 작성하여 전사본을 수정하는 것. 반복되는 잘못 들은 단어는
corrections.tsv를 통해 수정하고, 표현 자체는 그대로 둡니다. - 아무도 언급하지 않은 소유자와 날짜가 있는 액션 아이템을 작성하는 것.
- 결과를 열어보지 않고 성공을 보고하는 것. 전사본의 첫 부분과 마지막 부분을 읽고 화자 수와 참석자 수를 비교하십시오.