로컬 음성 인식·합성

최종 업데이트

FluidAudio란? 맥 뉴럴엔진으로 받아쓰기·화자 구분·음성 만들기

받아쓰기와 화자 구분, 음성 생성을 필요한 만큼 Mac 앱에 넣을 수 있어요.

FluidAudio는 Apple 기기에서 음성 모델을 실행하는 Swift SDK예요. 녹음을 글로 바꾸는 ASR1, 누가 말했는지 나누는 화자 구분, 글을 소리로 바꾸는 TTS2를 로컬 앱에 넣을 수 있어요. 지원 언어와 모델을 고른 뒤 필요한 기능 하나부터 실행해보세요.

먼저 짧은 녹음 한 개에서 필요한 결과를 정하세요. 말한 내용을 읽고 싶으면 ASR, 사람별 발언 시간을 나누려면 화자 구분을 사용해요. 기능마다 사용하는 모델과 지원 언어가 있으니 실제 파일과 언어를 기준으로 고르면 돼요. FluidAudio

지원 언어를 고른 뒤 받아쓰기를 실행해요

FluidAudio의 기본 Parakeet v3는 25개 유럽 언어를 지원하고 v2는 영어용이에요. 한국어 받아쓰기는 WhisperKit의 다국어 모델로 시작할 수 있어요. 사용할 언어가 모델의 지원 목록에 포함돼 있는지 먼저 확인하세요. 음성 모델 목록

Apple Silicon Mac과 Xcode의 Swift 환경을 준비하세요. 아래 CLI3를 빌드하려면 소스의 Package.swift에 맞는 도구 버전을 사용해요. 짧은 영어 녹음인 audio.wav를 저장소 폴더에 놓고 먼저 받아쓰기만 실행해요. 첫 실행에는 모델 다운로드와 준비 시간이 들어가요.

영어 녹음으로 ASR 시작
git clone --depth 1 https://github.com/FluidInference/FluidAudio.git
cd FluidAudio
swift run fluidaudiocli transcribe ./audio.wav
소형 데스크톱 옆에 녹음기와 노트가 놓인 책상
받아쓰기 모델은 처리할 녹음의 언어에 맞춰 골라요.

FluidAudio의 ANE 경로와 모델별 언어표를 함께 봐요

FluidAudio README는 Apple 기기에서 로컬 추론을 ANE4로 오프로딩5하는 방식을 설명해요. ASR은 모델마다 지원 범위가 달라요. 예를 들어 Parakeet 모델 가운데는 유럽 25개 언어와 일본어를 지원하는 모델이 있고, Parakeet EOU는 영어 실시간 전사용이에요.

TTS도 모델별로 지원 언어가 달라요. 사용하려는 모델의 표에서 언어와 실시간 처리 지원을 확인해요. FluidAudio 공식 README · API 문서

화자 구분은 발언 시간을 나눠줘요

화자 구분을 실행하면 녹음에서 같은 사람이 말한 구간을 묶어 화자 ID를 붙여줘요. 그 ID를 실제 참석자 이름과 맞추고 ASR이 만든 글에 시간 구간을 연결하면, 누가 어떤 말을 했는지 읽을 수 있는 회의록을 만들 수 있어요.

이미 녹음한 회의에서 화자를 구분할 때는 offline 모드부터 사용해 보세요. 아래 명령은 audio.wav에서 화자별 발언 시간 구간을 찾아요. 말이 겹친 부분이나 목소리가 비슷한 사람의 구간이 맞게 나뉘었는지 원음과 대조하세요. CLI 안내

화자 구분
swift run fluidaudiocli process ./audio.wav --mode offline --threshold 0.6

글을 읽어주는 음성도 만들 수 있어요

TTS는 입력한 원고를 소리로 바꾸는 기능이에요. FluidAudio에서는 Kokoro, PocketTTS 등 경로를 골라 사용할 수 있어요. 아래는 Kokoro ANE v3로 짧은 영어 안내문을 en.wav에 저장하는 예제예요. v3는 macOS 15 이상에서 CPU6·ANE·GPU7를 분담하는 고정 경로를 사용해요.

영어 안내문을 WAV로 저장
swift run -c release fluidaudiocli tts "The meeting starts at four." \
  --backend kokoro-ane --kokoro-version v3 --voice af_heart --output en.wav

실행이 끝나면 작업 폴더의 en.wav를 재생하세요. 목소리와 발음이 맞는지 듣고, 사용할 언어에 맞춰 variant와 voice를 선택하면 돼요. 일본어 예제는 --variant ja --voice jf_alpha를 사용해요. 다른 언어의 원고를 넣을 때도 그 언어용 모델·목소리가 준비됐는지 먼저 맞춰주세요.

원탁 위에 노트북과 마이크, 노트가 놓인 회의 공간
화자 구분 결과와 받아쓴 글을 시간 기준으로 연결해요.

음성 비서를 만들 때는 대기 시간을 나눠 재요

음성 비서는 VAD8로 말하는 구간을 찾고, ASR로 말을 글로 바꾼 뒤 LLM9이 답을 만들고 TTS가 읽어줘요. VAD·ASR·LLM·TTS에 걸린 시간을 나눠 기록하면 어느 단계에서 대답이 늦어지는지 찾기 쉬워요.

파일 받아쓰기는 전체 파일 완료 시간을, 대화는 말이 끝난 뒤 첫 답의 소리가 들릴 때까지를 기록하세요. 앱을 함께 켠 상태에서 비교해야 GPU의 LLM과 음성 경로가 자원을 나눠 쓰는 상황도 반영할 수 있어요. 첫 모델 준비가 포함된 실행은 따로 적고, 익숙한 문장 여러 개로 발음·인식 오류도 같이 확인해요.

필요한 기능만 앱에 넣어요

명령줄 결과가 맞으면 Swift Package Manager에서 FluidAudio를 앱에 추가해 필요한 매니저를 호출하세요. 모델을 반복해서 쓰는 앱은 로딩한 상태를 유지하고, 실행 중 다시 다운로드하지 않도록 모델 준비와 사용자 요청을 나눠 구성하면 돼요.

오프라인 전용 앱은 모델을 미리 배치하고 ModelHub.offlineMode = true를 설정해요. 필요한 파일이 빠져 있으면 오류가 나므로, 배포할 앱에서 쓸 모델 폴더를 그대로 연결해 실제 요청까지 시험하세요. 필요한 언어의 받아쓰기가 끝까지 성공한 뒤 화자 구분이나 TTS를 하나씩 추가하면 어느 기능에서 문제가 생겼는지 찾기 쉬워요.

마이크 옆 노트북에 두 개의 음성 파형이 표시된 책상
생성한 음성 파일에서 발음을 확인하고, 음성 생성에 걸린 시간은 따로 기록해요.

용어 각주

  1. 자동 음성 인식 — 음성에서 발화를 인식해 텍스트로 변환하는 기술입니다.

    본문으로 돌아가기
  2. 음성 합성 — 텍스트를 발음과 운율을 가진 음성 신호로 변환하는 기술입니다.

    본문으로 돌아가기
  3. CLI — Command-Line Interface의 약자입니다. 터미널에 명령어를 입력해 프로그램을 조작하는 방식입니다.

    본문으로 돌아가기
  4. 뉴럴엔진 — Apple Silicon에 들어 있는 신경망 계산 전용 장치입니다.

    본문으로 돌아가기
  5. 오프로딩 — 메모리가 부족할 때 모델 데이터 일부를 GPU 메모리에서 시스템 RAM이나 저장장치로 옮겨 처리하는 방식입니다. 데이터 이동이 추가됩니다.

    본문으로 돌아가기
  6. CPU — 운영체제와 일반 프로그램 명령을 실행하고, AI에서는 전처리·데이터 이동 등 범용 연산을 맡는 중앙 처리 장치입니다.

    본문으로 돌아가기
  7. GPU — 많은 계산을 병렬로 처리하는 프로세서입니다. AI 모델 실행에서는 모델 계산을 맡습니다.

    본문으로 돌아가기
  8. 음성 구간 검출 — 신호에서 음성이 있는 구간과 그렇지 않은 구간을 판별하는 처리입니다.

    본문으로 돌아가기
  9. 대규모 언어 모델 — 대규모 텍스트 데이터에서 언어 패턴을 학습해 문맥에 맞는 텍스트를 처리하고 생성하는 모델입니다.

    본문으로 돌아가기

자주 묻는 질문

이 글에서 가장 먼저 확인할 것은 무엇인가요?
FluidAudio는 Apple 기기에서 음성 모델을 실행하는 Swift SDK예요. 녹음을 글로 바꾸는 ASR, 누가 말했는지 나누는 화자 구분, 글을 소리로 바꾸는 TTS를 로컬 앱에 넣을 수 있어요. 지원 언어와 모델을 고른 뒤 필요한 기능 하나부터 실행해보세요.