녹음으로 강의 노트나 회의록을 만들어주는 서비스, 요즘 정말 많죠.
당장 저만해도 Show GN에서 꽤 여러번 본 것 같습니다.
이미 서비스가 많은데도 왜 계속 이런게 나오냐, 하면 저는 개인의 취향에 완벽히 들어맞는 제품이 없어서일거라고 생각합니다.
요약 형식이 마음에 안 들거나, 꼭 로컬에서만 돌거나, 전처리가 원하는대로 안되거나 등등...
이런 사소한 차이 때문에 대부분의 구조를 공유하는 조금씩 다른 서비스들이 계속 만들어지는 것 같다는 생각이 들어서
이런 서비스들이 공유하는 부분만 담은, 확장 가능한 자유도 높은 CLI 도구를 만들어보았습니다!
- 기본적으로는 영상(음성) 입력 -> 전사 -> (영상이라면) 캡처 -> 전사본과 캡처의 조합 -> 전처리 -> 요약 -> 내보내기의 과정을 거칩니다.
모든 과정은 선택적이며, 자유롭게 확장·변경 가능합니다!- 영상은 로컬 mp4일 수도, 유튜브 링크일 수도, 그냥 음성일 수도 있고, 전사는 로컬 위스퍼, OpenVINO, 메타, 그록, 뭐든 사용할 수 있습니다. 영상에 딸린 srt 자막이나 미리 만들어둔 전사본이 있다면 이것도 생략 가능해요.
- 이 모든 확장이 도구에 무겁게 다 들어있지 않습니다. 코어는 최대한 가볍게, 필요한 부분은 모듈식으로 추가로 다운로드해서 붙이면 됩니다.
- 전사본을 전처리하든, 요약하든, 이 역시 선택적입니다. 어디 api의 어느 모델을 쓸 지, codex/claude 구독을 사용할 지, 전처리와 요약에 어떤 프롬프트를 쓸 지, 전부 커스텀 가능합니다. 전처리를 5번에 걸쳐 하고 싶다? 다 가능합니다.
- 아예 상관없는 프로그램도 도중에 돌릴 수 있습니다.
run
스테이지에서 아예 커맨드라인 명령어를 받습니다. - 만약 원하는 모듈이 없다면, 미리 정의된 어댑터 인터페이스에 맞춰 커스텀 어댑터를 제작해 붙일 수 있습니다.
- 파이프라인은 CMAKE 스타일의 단일 config 파일로 설정합니다. 여기서 각 단계의 순서를 바꾸거나, 추가하거나, 인자를 조절할 수 있어요.
- 내부에도 파이프라인이 있지만, 외부 파이프라인에서도 notepipe를 사용할 수 있습니다. UNIX 표준 입출력을 사용하기 떄문에, 명령줄에서 다른 도구로 호출하거나
|
로 출력 결과를 넘길 수 있습니다. pandoc으로 넘겨서 pdf 노트를 만든다거나 할 수 있겠죠. - 어디서든 돌아가도록 Windows, Linux, macOS 호환성에 신경썼습니다.
남는 공기계에서 돌리고 싶은 분이 있으실 것 같아서, termux에서도 동작하게 만들었습니다!- 기본적으로 다른 비슷한 서비스에서 사용할 표준적인 엔진이 될 수 있도록 만들었지만, 그 자체로도 standalone cli 도구입니다. 엔진이 아니라 제품으로서도 잘 동작해요.
- 모든 동작 과정이 파일로 남습니다. 나중에 지워도 되고, 중단된 작업을 이어가도 되고, 다른 방법으로 활용해도 됩니다.
- MIT 라이선스입니다. 커스텀해서 자기 제품의 엔진으로 사용하셔도 됩니다.
사실 요새는 AI로 물건 만드는게 너무나 쉬워져서, 개발보다는 설계에 시간을 훨씬 많이 쏟았습니다.
가능한 코드 수정 없이, 외부에서 확장 가능하고, 구조 변경이 쉬워야하고, 모든 단계가 투명하고 직관적이어야하고...
좋은 설계란 무엇인가에 대해 오랜만에 깊게 공부하는 시간이었습니다.
이거 설계한다고 SOLID 원칙부터 다시 펼쳐보고, 이래저래 공을 많이 들였는데 다른 분들 보시기엔 어떨 지 궁금합니다.
처음에는 mizorewww/course2md 의 포크 프로젝트로 시작했고, 지금도 영상의 스크린샷 검출과 자막 처리, 타임라인 정렬 등은 course2md의 코드를 사용하고 있습니다.
좀 크게 잘 됐으면 하는 마음에 다른 인기있는 오픈소스 저장소처럼 AI로 로고도 만들어 넣고, 뱃지도 달아보고 했습니다.
점점 더 커져서 멋진 오픈소스 프로젝트가 될 수 있도록 애정을 갖고 관리해나갈 계획입니다.
아직 이런 설계가 처음이라 부족한 부분도 많고, 아직 0.x 버전인만큼 자주 업데이트가 될 수도 있을 것 같습니다.
이슈든, 댓글이든, 어떤 방법으로든, 조언해 주시거나 응원해주시면 정말 감사하겠습니다.
긴 글 읽어주셔서 감사합니다.