# (ffmpeg) m4a통화녹음 파일 STT로 변환하기 (⭐⭐⭐)

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/094439_xUyl8KHbk6FhEtyxIJ?q=80&s=1280x180&t=outside&f=webp)

## 실습환경

- Mac OS M1 (Sonoma 14.6.1(23G93))

## 워크플로우 

## 배경

- 안드로이드 폰에서 기본 녹음기로한 통화녹음 m4a파일을 openAI Transcription API을 통해 텍스트로 변환하는 작업을 하려고 함.

- 테스트용 m4a 데이터샘플

- [https://raw.githubusercontent.com/2innnnn0/assets/refs/heads/master/audio/07089191203_240710_194457.m4a](https://raw.githubusercontent.com/2innnnn0/assets/refs/heads/master/audio/07089191203_240710_194457.m4a)

[https://raw.githubusercontent.com/2innnnn0/assets/refs/heads/master/audio/07089191203_240710_194457.m4a](https://raw.githubusercontent.com/2innnnn0/assets/refs/heads/master/audio/07089191203_240710_194457.m4a)

## 과정

- 맥북 터미널에서 cURL로 실행해보니 m4a파일을 지원하지 않는다고 함.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/094440_Ekv0ZMmg21L9HRPs7f?q=80&s=1280x180&t=outside&f=webp)

- `file 07089191203_240710_194457.m4a` 로 확인해보면 `ISO Media, MPEG v4 system, 3GPP` 인데 같은 m4a파일이더라도 openAI API가 인식하는 코덱이 다르면 변환을 해야한다고 chatGPT가 답변해줌.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/094441_AhLwr7EFT9oBlQJn5W?q=80&s=1280x180&t=outside&f=webp)

- 해서, 이것을 ffmpeg로 다시 한번 변환 작업을 해봄

```
ffmpeg -i 07089191203_240710_194457.m4a -c:a aac -b:a 192k output.m4a
```

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/094442_Lmg5J0ecqJNXcxr2fN?q=80&s=1280x180&t=outside&f=webp)

- 변환 전후 비교

    - (전) `ISO Media, MPEG v4 system, 3GPP`

    - (후) `ISO Media, Apple iTunes ALAC/AAC-LC (.M4A) Audio`

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/094442_iYQ4KEH5o8a715lhAK?q=80&s=1280x180&t=outside&f=webp)

로컬에서 테스트해봤으니 이제 n8n 서버에서 직접 해보는 작업을 진행.

```
curl https://api.openai.com/v1/audio/transcriptions \
  -H "Authorization: Bearer <OPENAI_API_KEY>" \
  -H "Content-Type: multipart/form-data" \
  -F file=@output.m4a \
  -F model="whisper-1"
 
{"text":"이규리 시집 당신은 첫눈입니까? 상자 상자들을 두고 그들은 떠났다. 아래층에 맡겨둔 보물 아래층에 맡겨둔 약속을 아래층에 맡겨둔 질문을 아래층에 맡겨둔 당신의 아래층이 모두 가지세요. 그 상자를 나는 열지 않아요. 먼저온 꽃의 슬픔과 허기를 재울 때 고요이 찬 인연이 저물 때 생각해보면 가능이란 먼 것만은 아니었어요."}%
```

---

## n8n 서버에서 ffmpeg 설치하는 과정

*클라우드는 안되고 셀프호스팅에서만 가능합니다.

본인의 n8n서버의 docker 설정을 열고 아래와 같이 진행합니다

1. docker ps로 container id를 확인합니다.

- `docker ps` 

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/094443_xLfFdMaM3hnKMOb9K2?q=80&s=1280x180&t=outside&f=webp)

1. ** docker exec 명령으로 루트 권한으로 접속합니다.**

- `docker exec -it --user root [CONTAINER_ID] sh`
- `apk add --no-cache ffmpeg`

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/094444_FIv8xLBzyYPtI9ABHv?q=80&s=1280x180&t=outside&f=webp)

1. 설치가 잘 되었는지 체크합니다.

- `ffmpeg -version`

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/094444_XDVtTKJIv27fxFYEcT?q=80&s=1280x180&t=outside&f=webp)

이제, n8n서버에서 아래 워크플로우를 다운받고 넣어봅니다.

1. m4a 파일 불러오기

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/094445_lDpnL3Q0mQX1VE2aut?q=80&s=1280x180&t=outside&f=webp)

1. Read/Write Files from Disk

    1. 도커 서버 저장소에 임시 파일을 생성하기.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/094446_i8rx8rxWbOwYS9YX5I?q=80&s=1280x180&t=outside&f=webp)

1. Execute Command

- m4a를 AAC로 변환하기.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/094447_P9V4bCztMMHGwap1c1?q=80&s=1280x180&t=outside&f=webp)

1. Read/Write Files from Disk

- 변환된 파일을 다시 읽어오기 

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/094448_URrpbEbfF2cybHkamU?q=80&s=1280x180&t=outside&f=webp)

1. OpenAI API

- Transcribe a Recording 으로 m4a 파일을 텍스트로 변환하기.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/094450_Is1cXwzmKdM1H44FfP?q=80&s=1280x180&t=outside&f=webp)

For the site tree, see the [root Markdown](https://slashpage.com/n8n-guide.md).
