위에서 파일을 고르면 바로 열립니다.준비됨 — 인터넷을 끊어도 이대로 동작합니다.이 브라우저에서는 쓸 수 없습니다 (나머지는 그대로 동작합니다).오프라인 저장에는 https:// 또는 localhost가 필요합니다.여기서는 저장할 수 없지만, 어느 쪽이든 올라가는 것은 없습니다.파일은 어디로도 가지 않았습니다. 파일 {total}개를 불러왔고 모두 이 사이트의 것입니다. {platform}무언가가 {hosts}에 접속했는데, 이 도구는 절대 그러지 않습니다. 살펴볼 만합니다. {platform}광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일이나 그 1바이트도 받지 않았습니다.광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일이나 그 1바이트도 받지 않았습니다.문제가 생겼습니다: {detail}. 처음부터 다시 하려면 페이지를 새로 고치세요.파일 {count}개를 읽는 중…파일 {count}개를 읽는 중…예시로 해 보기예시를 만드는 중…이 브라우저에서는 예시를 만들지 못했습니다. 대신 파일을 골라 주세요.
파일을 읽고 편집하고 쓰는 일은 내 브라우저가 내 기기의 성능으로 합니다. 이 도구에는 네트워크 기능이 아예 없어서 무언가를 가져올 수도 보낼 수도 없습니다. 설령 있더라도 이 페이지 반대편에는 녹음을 받아 줄 서버가 없습니다.
✗ 업로드 없음
✗ 가입 없음
✗ 워터마크 없음
✓ 영상 넣고 소리 받기
✓ 오프라인 동작
실시간 확인:확인 중…
오프라인:확인 중…
그냥 믿지 마시고 직접 확인해 보세요. 개발자 도구의 '네트워크' 탭을 켜 놓고 무언가를 거꾸로 돌려 보십시오. 샘플도, 파일 이름도, 고른 파일의 단 1바이트도 실려 나가는 요청이 없습니다. 아니면 인터넷을 끊고 그냥 편집해 보셔도 됩니다. 오디오를 어딘가로 보내서 처리하는 도구라면 그대로 멈출 테니까요.
이 약속을 직접 확인하는 방법
녹음 파일은 나갈 곳이 없습니다. 이 페이지가 연결해도 되는 주소는 Content-Security-Policy에 모두 적혀 있는데, 그중 이 사이트 것은 하나도 없습니다. 파일이 모일 만한 수신 지점이 없고, 설령 있더라도 거기로 파일을 보낼 코드가 없습니다.
여기서는 아무것도 가져오지 않습니다. 이 도구에는 네트워크 기능이 아예 없습니다. 붙여 넣을 주소도, 내려받을 것도, 처음 쓸 때 가져오는 엔진도 없어요. 내 오디오에 닿는 모든 바이트는 페이지를 불러올 때 이 출처에서 온 것입니다.
디코더는 브라우저에 이미 들어 있는 그것입니다. 파일은 decodeAudioData에 넘어갑니다. <audio> 요소가 음원을 재생할 때 쓰는 바로 그 코드예요. 내 파일 형식을 읽겠다고 여기서 무언가를 들여오지도 않고, 읽어 달라고 이 페이지 밖의 무언가에 부탁하지도 않습니다.
동영상의 화면은 애초에 디코딩되지 않습니다. 동영상을 넣으면 오디오 트랙만 요청합니다. 프레임은 읽히지도, 디코딩되지도, 그려지지도, 들여다보이지도 않습니다. 이 페이지에는 그럴 수 있는 코드가 없고, 나오는 파일에는 소리 말고 아무것도 들어 있지 않습니다.
샘플은 다시 인코딩되지 않고 그대로 적힙니다. WAV는 이 페이지가 계산한 샘플 앞에 헤더를 붙인 것입니다. 중간에서 내 녹음을 두고 판단을 내리는 인코더가 없고, 그런 일이 벌어질 만한 업로드라고 부를 것도 없습니다.
구글이 불러오는 것과, 구글에게 주지 않는 것. 광고와 측정 스크립트는 구글에서 옵니다. 어느 쪽에도 내 녹음에 관한 것은 넘어가지 않습니다. 파일도, 샘플도, 이름도, 용량도, 길이도, 얼마나 컸는지도요. 읽고 편집하고 쓰는 코드는 한 줄도 빠짐없이 이 출처에서 제공되고 저장소에 공개되어 있습니다.
후원 버튼이 불러오는 것과, 후원 버튼이 받지 못하는 것. 헤더의 "Buy me a coffee" 버튼은 cdnjs.buymeacoffee.com의 스크립트가 그리고, 글꼴은 Google Fonts에서 가져옵니다. 그저 링크일 뿐이에요. 방문을 보고하지도, 나에 관한 것이나 내 파일에 관한 것을 받아 가지도 않습니다.
오프라인에서도 동작합니다. 네트워크를 끊어도 이 페이지의 기능이 전부 그대로 돌아갑니다. 가장 간단한 증거입니다.
직접 확인해 보세요. 위에 적은 어느 것도 그냥 믿으실 필요는 없습니다. 이 페이지는 저장소 안의 템플릿과 설정을 빌드 스크립트가 찍어 낸 결과이고, 그 스크립트는 누구나 읽고 직접 돌려 볼 수 있습니다. 결과물은 dist 브랜치에 그대로 올라가 있고요. 그래서 실제로 제공되는 파일과 소스를 빌드한 결과를 나란히 놓고 비교해 보실 수 있습니다:
먼저 읽어 볼 파일을 꼽자면, Content-Security-Policy는 config/site.toml, 파일을 브라우저 자체 디코더에 넘기는 스무 줄은 src/shared/audio-decode.js, 타임 스트레처는 src/stretch.js, 리샘플러는 src/speed.js, 샘플 앞에 붙는 헤더는 src/shared/wav.js에 있습니다. 어느 것도 요청을 보낼 수 있는 무언가를 불러오지 않습니다.
회사 보안 소프트웨어가 업로드를 경고한다면. 그것은 브라우저에서 파일이 선택되는 순간을 지켜보며, 페이지가 그것을 보낼 생각인지는 알 수 없습니다 — 그래서 고르는 순간에 경고합니다. 여기서는 아무것도 보내지 않습니다. 브라우저 개발자 도구를 열고 네트워크 탭으로 옮긴 뒤 파일을 골라 보세요. 그것을 실어 나르는 요청은 없고, 이 페이지 자체의 로컬 미리보기 말고는 요청 자체가 없습니다. 같은 확인을 IT 팀도 삼십 초면 할 수 있습니다.
1 파일 고르기
파일
—
용량
—
길이
—
소리
—
가장 큰 순간
—
읽어들인 형식
—
2 손보기
거꾸로 재생하기 샘플을 마지막 것부터 차례로 적어 냅니다. 그 밖에 달라지는 것은 없어서, 두 번 거꾸로 돌리면 처음 파일이 그대로 돌아옵니다.
길이
—
배속
—
가장 큰 순간
—
대략
—
3 저장하기
무엇으로 쓸지 WAV는 샘플을 있는 그대로 담기 때문에, WAV로 쓰는 것 자체가 품질을 깎을 수 없습니다. 작은 파일은 아닙니다. 위의 예상 용량을 보세요.
소리를 읽는 중…시작하는 중…뒤집는 중…음높이를 지키며 늘이는 중…다시 표본화하는 중…레벨을 맞추는 중…파일을 쓰는 중…모노스테레오{n}채널{channels}, {khz} kHz{rate} Hz (파일에 적힌 값){rate} Hz (가정한 값)이 형식은 이 도구가 읽는 어떤 머리말에도 어떤 주파수로 녹음했는지 적어 두지 않아서 48 kHz로 디코딩했습니다. 녹음이 다른 주파수로 되었다면 브라우저가 읽어 들이면서 다시 표본화했고 — 여기서 정확하지 않은 것은 그 하나뿐입니다.무음{n} dBFS{n}x1x 그대로 둡니다.{speed} 빠르게, 음높이는 그대로. 녹음을 겹치는 창으로 잘라 더 촘촘히 다시 놓으며, 이 일은 여기서 하고 어디로도 보내지 않습니다.{speed} 느리게, 음높이는 그대로. 녹음을 겹치는 창으로 잘라 더 넓게 다시 놓으며, 이 일은 여기서 하고 어디로도 보내지 않습니다.{speed} 빠르게, 그리고 모두 함께 움직입니다. 반음 {semitones}만큼 올라가며, 테이프를 빨리 돌릴 때와 같습니다.{speed} 느리게, 그리고 모두 함께 움직입니다. 반음 {semitones}만큼 내려가며, 테이프를 느리게 돌릴 때와 같습니다.이미 이 설정이 놓을 자리에 정확히 있습니다.{db} dB 올렸습니다. 녹음에서 가장 큰 순간이 최대 눈금 바로 아래에 놓입니다.{db} dB 내렸습니다. 녹음에서 가장 큰 순간이 최대 눈금 바로 아래에 놓입니다.있는 그대로 둡니다.{db} dB 올림. 표본마다 {gain}을 곱하고 가장 큰 순간을 {peak}으로 올립니다.{db} dB 내림. 표본마다 {gain}을 곱하고 가장 큰 순간을 {peak}으로 내립니다.이 설정에서는 가장 큰 순간이 최대 눈금보다 {db} dB 위로 올라갑니다.32비트 부동소수점 WAV는 그 표본을 담을 수 있어서 파일 자체에서는 잃는 것이 없습니다. 다만 재생하는 쪽이 레벨을 도로 내려야 하고, 대부분은 대신 천장에서 눌러 버립니다. 소리를 줄이거나 “최대한 크게”를 고르세요.16비트 WAV는 그것을 담지 못해서 그 표본들이 천장에서 눌리고, 그게 바로 왜곡 소리입니다. 소리를 줄이거나 “최대한 크게”를 고르거나, 그것을 지켜 주는 32비트 부동소수점으로 쓰세요.WAV, 32비트 부동소수점WAV, 16비트피크 {peak}최대 눈금을 넘은 표본 {n}개최대 눈금을 넘은 표본 {n}개{n}초{a} {b}{a} · {b}{n} B{n} KB{n} MB{n} GB그 파일은 비어 있습니다.이 브라우저가 그 파일에서 소리를 하나도 꺼내지 못했습니다. 디코딩하지 못하는 형식이거나, 파일에 오디오 트랙이 아예 없거나입니다. MP3, WAV, FLAC, M4A, MP4, MOV, WebM, Ogg는 모두 되고 AVI, WMA, 대부분의 MKV는 안 됩니다.그 파일에는 소리가 없습니다 — 디코딩해도 아무것도 나오지 않았습니다.그 파일은 읽지 못했습니다: {why}WAV에는 채널이 적어도 하나 필요합니다채널마다 길이가 다릅니다그러면 4 GB가 넘는 WAV가 되는데, 형식이 그만한 크기를 적어 두지 못합니다. 32비트 부동소수점 대신 16비트를 쓰거나 더 짧은 구간으로 해 보세요.소리를 편집하는 중에 문제가 생겼습니다.오디오는 어디로도 가지 않았습니다. 파일 {total}개를 불러왔습니다. {platform}무언가가 {hosts}에 접속했는데, 이 도구는 절대 그러지 않습니다. {platform}광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일을 받지 않았습니다.광고와 측정과 후원 버튼을 위한 이 사이트 자신의 스크립트가 호스트 {hosts}곳에서 왔습니다. 그중 어느 쪽도 파일을 받지 않았습니다.
원하는 결과가 나왔나요?
무엇이 잘못됐나요?
고맙습니다 — 큰 도움이 됩니다.
보내지는 것은 답변뿐이고, 그것도 버튼을 눌렀을 때만입니다. 파일도, 파일 이름도, 파일에 관한 어떤 정보도 보내지 않습니다.
# 오디오 편집 — 거꾸로 재생, 배속 변경, 소리 키우기
거꾸로 돌리고, 배속을 바꾸고, 작게 녹음된 소리를 키웁니다. 전부 내 기기 안에서.
> 음원을 거꾸로 돌리고, 빠르거나 느리게 만들고, 작게 녹음된 소리를 키웁니다. 동영상에서 소리만 뽑아내는 것도 됩니다. 브라우저에서 돌아가고 아무것도 업로드하지 않습니다.
이 페이지는 브라우저 안에서만 동작하는 대화형 도구입니다(https://abox.tools/ko/오디오-편집/). 도구에 넘긴 어떤 것도 업로드되지 않습니다. 아래는 이 페이지가 도구에 대해 글로 설명하는 내용 전부입니다. 도구를 쓰려면 이 주소를 여세요.
## 녹음 파일은 **절대 업로드되지 않습니다**. 서버가 아예 없으니까요.
파일을 읽고 편집하고 쓰는 일은 내 브라우저가 내 기기의 성능으로 합니다. 이 도구에는 네트워크 기능이 아예 없어서 무언가를 가져올 수도 보낼 수도 없습니다. 설령 있더라도 이 페이지 반대편에는 녹음을 받아 줄 서버가 없습니다.
- ✗ 업로드 없음
- ✗ 가입 없음
- ✗ 워터마크 없음
- ✓ 영상 넣고 소리 받기
- ✓ 오프라인 동작
## 오디오 파일을 편집하는 방법
1. **파일을 고릅니다.** MP3, WAV, FLAC, M4A, Ogg, Opus 파일을 선택 영역에 끌어다 놓으세요. 필요한 것이 영상 속 소리라면 동영상을 놓아도 됩니다. 브라우저가 디스크에서 곧바로 읽고, 그동안 어디로도 아무것도 나가지 않습니다.
2. **그것 때문에 오셨다면, 거꾸로 돌립니다.** 체크박스 하나입니다. 샘플을 마지막 것부터 차례로 적어 내는데, 이건 완전히 되돌릴 수 있습니다. 두 번 하면 샘플 하나까지 처음 파일 그대로 돌아옵니다.
3. **배속을 정합니다.** 슬라이더를 끌거나, 배수를 입력하거나, 미리 준비된 버튼을 누르세요. 그다음 음정을 어떻게 할지 고릅니다. 있던 자리에 붙들어 두면 1.5배속으로 듣는 강의에 알맞고, 배속과 함께 움직이게 두면 테이프가 하던 대로 목소리가 높아지거나 낮아집니다.
4. **음량을 정합니다.** 데시벨로 변화량을 지정하거나, 가장 큰 순간이 천장 바로 아래에 놓일 때까지 올려 달라고 하면 됩니다. 그 순간이 어디에 놓일지는 아무것도 누르기 전에 페이지가 알려 주고, 고른 설정이 그것을 최대치 너머로 밀어낼 것 같으면 미리 경고합니다.
5. **저장합니다.** 작업이 내 기기에서 일어나므로, 걸리는 시간은 대기열이 아니라 기기 성능에 달려 있습니다. 나오는 것은 WAV, 그러니까 샘플 앞에 헤더만 붙인 파일입니다. 페이지에서 먼저 들어 본 다음 브라우저의 다운로드로 바로 넘어갑니다.
## 자세한 설명
[보내기 전에 음성 메모를 정리하는 방법](https://abox.tools/ko/가이드/음성-메모-정리하기/): 무음과 헛시작을 잘라낸 뒤, 음량을 최대치 바로 아래까지 끌어올립니다. 브라우저 도구 두 개의 연결, 음질을 지키는 순서, 그리고 녹음은 컴퓨터를 떠나지 않습니다.
## 상자 속 다른 도구
- [PDF 합치기 & 나누기](https://abox.tools/ko/pdf-합치기/): 서버를 한 바퀴 돌지 않고 페이지를 옮깁니다.
- [PDF 압축](https://abox.tools/ko/pdf-용량-줄이기/): 문서를 어디에도 보내지 않고 가볍게 만듭니다.
- [PDF 가리기](https://abox.tools/ko/pdf-가리기/): 글자를 파일에서 지우고, 지운 뒤에 파일을 검색해서 증명합니다.
- [이미지를 PDF로](https://abox.tools/ko/이미지-pdf-변환/): 사진을 문서 하나에 담습니다.
## 자주 묻는 질문
### 제 오디오가 어딘가로 업로드되나요?
아닙니다. 읽고 편집하고 쓰는 일은 내 기기에서 도는 내 브라우저가 합니다. 이 도구에는 서버 쪽이라는 것이 없고, 이 페이지의 `Content-Security-Policy`에 연결해도 되는 주소가 전부 적혀 있는데 그중 이 사이트 것은 하나도 없습니다. 말로 듣기보다 직접 확인하고 싶다면, 인터넷을 끊고 그냥 음원을 거꾸로 돌려 보세요.
### 동영상에서 소리만 뽑을 수 있나요?
됩니다. 여기서는 MP3를 여는 것과 똑같은 일입니다. MP4, MOV, WebM을 넣으면 오디오 트랙만 디코딩됩니다. 화면은 아예 읽지 않고, 나오는 것은 영상이 들어 있지 않은 소리 파일입니다. 원하시는 것이 그것뿐이라면 — 소리를, 그대로 — [동영상에서 오디오 추출](https://abox.tools/ko/동영상-오디오-추출/)이 다른 것은 아무것도 없는 페이지에서 같은 일을 합니다. 소리도 손봐야 할 때 이리로 돌아오세요.
### 배속을 바꾸면 음정도 바뀌나요?
그렇게 해 달라고 할 때만 바뀝니다. "음정 유지"는 녹음을 50밀리초쯤 되는 겹치는 창으로 잘라, 파형이 만나는 지점이 맞아떨어지는 자리를 골라 더 촘촘하게 또는 더 성기게 다시 놓습니다. 그래서 1.5배속에서도 목소리는 같은 목소리로 남습니다. "함께 움직이게"는 대신 리샘플링을 하는데, 테이프를 빨리 감을 때 벌어지는 일과 같습니다. 2배속은 정확히 한 옥타브 위고요.
### 왜 MP3가 아니라 WAV로 저장하나요?
MP3 인코더를 갖고 있는 브라우저가 없고, 그렇다고 인코더가 있는 서버로 내 녹음을 보내는 일은 이 도구가 하지 않기 때문입니다. WAV는 인코더가 아예 필요 없습니다. 샘플 앞에 44바이트 헤더를 붙인 것이니까요. 그래서 정직한 선택이자 품질을 깎을 수 없는 유일한 선택입니다. 대신 큽니다. 스테레오로 1분에 10메가바이트쯤 되니까요. 어떤 플레이어도, 휴대폰도, 편집기도 WAV를 열고, MP3가 필요한 프로그램이라면 이걸로 MP3를 만들 수 있습니다.
### 어떤 형식을 열 수 있나요?
브라우저가 디코딩하는 것은 다 됩니다. 실제로는 MP3, WAV, FLAC, M4A와 AAC, Ogg Vorbis와 Opus, 그리고 MP4, M4V, MOV, WebM 동영상 안의 오디오입니다. 빠지는 것은 다른 곳과 같은 짧은 목록, AVI와 WMA와 대부분의 MKV입니다. 이 브라우저가 읽지 못하는 파일은 중간에 실패하는 대신 그렇다는 메시지와 함께 거부합니다.
### 소리를 키우면 찌그러지나요?
최대치를 넘길 때만 그렇고, 넘기기 전에 페이지가 알려 줍니다. 디지털 오디오에는 딱딱한 천장이 있습니다. 샘플은 최대치보다 커질 수 없어서, 그 위의 것은 천장에 눌려 납작해집니다. 그게 찌그러짐이에요. "최대한 크게"는 그런 일이 일어날 수 없는 설정입니다. 녹음에 남은 여유를 계산해 딱 그만큼만 쓰니까요. 천장 아래에서는 그저 곱셈일 뿐이라, 6 dB 올렸다가 6 dB 내리면 샘플은 시작한 자리로 돌아옵니다.
### 거꾸로 돌리거나 배속을 바꾸면 품질이 떨어지나요?
거꾸로 돌리는 것은 떨어지지 않습니다. 같은 샘플이 반대 순서로 나올 뿐이고, 이건 정확합니다. 배속을 바꾸는 것은 모든 샘플을 옮기는 일이라 복사가 아니라 계산입니다. 그래도 리샘플러가 지나가면서 제대로 필터링을 하기 때문에 빠르게 감아도 높은 음이 금속성 울림으로 되접히지 않고, 스트레처의 창도 계산이 떨어진 자리가 아니라 파형이 맞아떨어지는 자리에 놓입니다. 어느 쪽도 다시 인코딩하지 않습니다. 다시 인코딩할 인코더가 여기에 없으니까요.
### 파일 길이에 제한이 있나요?
도구에 정해 둔 제한은 없습니다. 현실적인 한계는 메모리입니다. 녹음 전체가 한 번에 이 페이지로 디코딩되고 내려받기 전에 WAV가 메모리에서 조립되므로, 스테레오 한 시간이면 1기가바이트에 조금 못 미치는 작업 공간이 필요합니다. 4기가바이트짜리 WAV는 아예 거부합니다. 형식 자체의 크기 필드가 그런 파일을 표현하지 못하니까요.
### 무료인가요? 가입해야 하나요?
무료이고 계정도, 로그인도, 체험판도, 워터마크도 없습니다. 이 사이트는 광고로 유지되는데, 그 광고에도 내 녹음에 관한 것은 넘어가지 않습니다.
## 이 약속을 직접 확인하는 방법
- **녹음 파일은 나갈 곳이 없습니다.** 이 페이지가 연결해도 되는 주소는 Content-Security-Policy에 모두 적혀 있는데, 그중 이 사이트 것은 하나도 없습니다. 파일이 모일 만한 수신 지점이 없고, 설령 있더라도 거기로 파일을 보낼 코드가 없습니다.
- **여기서는 아무것도 가져오지 않습니다.** 이 도구에는 네트워크 기능이 아예 없습니다. 붙여 넣을 주소도, 내려받을 것도, 처음 쓸 때 가져오는 엔진도 없어요. 내 오디오에 닿는 모든 바이트는 페이지를 불러올 때 이 출처에서 온 것입니다.
- **디코더는 브라우저에 이미 들어 있는 그것입니다.** 파일은 `decodeAudioData`에 넘어갑니다. `<audio>` 요소가 음원을 재생할 때 쓰는 바로 그 코드예요. 내 파일 형식을 읽겠다고 여기서 무언가를 들여오지도 않고, 읽어 달라고 이 페이지 밖의 무언가에 부탁하지도 않습니다.
- **동영상의 화면은 애초에 디코딩되지 않습니다.** 동영상을 넣으면 오디오 트랙만 요청합니다. 프레임은 읽히지도, 디코딩되지도, 그려지지도, 들여다보이지도 않습니다. 이 페이지에는 그럴 수 있는 코드가 없고, 나오는 파일에는 소리 말고 아무것도 들어 있지 않습니다.
- **샘플은 다시 인코딩되지 않고 그대로 적힙니다.** WAV는 이 페이지가 계산한 샘플 앞에 헤더를 붙인 것입니다. 중간에서 내 녹음을 두고 판단을 내리는 인코더가 없고, 그런 일이 벌어질 만한 업로드라고 부를 것도 없습니다.
- **구글이 불러오는 것과, 구글에게 주지 않는 것.** 광고와 측정 스크립트는 구글에서 옵니다. 어느 쪽에도 내 녹음에 관한 것은 넘어가지 않습니다. 파일도, 샘플도, 이름도, 용량도, 길이도, 얼마나 컸는지도요. 읽고 편집하고 쓰는 코드는 한 줄도 빠짐없이 이 출처에서 제공되고 저장소에 공개되어 있습니다.
- **후원 버튼이 불러오는 것과, 후원 버튼이 받지 못하는 것.** 헤더의 "Buy me a coffee" 버튼은 cdnjs.buymeacoffee.com의 스크립트가 그리고, 글꼴은 Google Fonts에서 가져옵니다. 그저 링크일 뿐이에요. 방문을 보고하지도, 나에 관한 것이나 내 파일에 관한 것을 받아 가지도 않습니다.
- **오프라인에서도 동작합니다.** 네트워크를 끊어도 이 페이지의 기능이 전부 그대로 돌아갑니다. 가장 간단한 증거입니다.
**직접 확인해 보세요.** 위에 적은 어느 것도 그냥 믿으실 필요는 없습니다. 이 페이지는 저장소 안의 템플릿과 설정을 빌드 스크립트가 찍어 낸 결과이고, 그 스크립트는 누구나 읽고 직접 돌려 볼 수 있습니다. 결과물은 `dist` 브랜치에 그대로 올라가 있고요. 그래서 실제로 제공되는 파일과 소스를 빌드한 결과를 나란히 놓고 비교해 보실 수 있습니다: https://github.com/A-Box-of-Tools/website
먼저 읽어 볼 파일을 꼽자면, Content-Security-Policy는 `config/site.toml`, 파일을 브라우저 자체 디코더에 넘기는 스무 줄은 `src/shared/audio-decode.js`, 타임 스트레처는 `src/stretch.js`, 리샘플러는 `src/speed.js`, 샘플 앞에 붙는 헤더는 `src/shared/wav.js`에 있습니다. 어느 것도 요청을 보낼 수 있는 무언가를 불러오지 않습니다.
오디오 파일을 편집하는 방법
파일을 고릅니다. MP3, WAV, FLAC, M4A, Ogg, Opus 파일을 선택 영역에 끌어다 놓으세요. 필요한 것이 영상 속 소리라면 동영상을 놓아도 됩니다. 브라우저가 디스크에서 곧바로 읽고, 그동안 어디로도 아무것도 나가지 않습니다.
그것 때문에 오셨다면, 거꾸로 돌립니다. 체크박스 하나입니다. 샘플을 마지막 것부터 차례로 적어 내는데, 이건 완전히 되돌릴 수 있습니다. 두 번 하면 샘플 하나까지 처음 파일 그대로 돌아옵니다.
배속을 정합니다. 슬라이더를 끌거나, 배수를 입력하거나, 미리 준비된 버튼을 누르세요. 그다음 음정을 어떻게 할지 고릅니다. 있던 자리에 붙들어 두면 1.5배속으로 듣는 강의에 알맞고, 배속과 함께 움직이게 두면 테이프가 하던 대로 목소리가 높아지거나 낮아집니다.
음량을 정합니다. 데시벨로 변화량을 지정하거나, 가장 큰 순간이 천장 바로 아래에 놓일 때까지 올려 달라고 하면 됩니다. 그 순간이 어디에 놓일지는 아무것도 누르기 전에 페이지가 알려 주고, 고른 설정이 그것을 최대치 너머로 밀어낼 것 같으면 미리 경고합니다.
저장합니다. 작업이 내 기기에서 일어나므로, 걸리는 시간은 대기열이 아니라 기기 성능에 달려 있습니다. 나오는 것은 WAV, 그러니까 샘플 앞에 헤더만 붙인 파일입니다. 페이지에서 먼저 들어 본 다음 브라우저의 다운로드로 바로 넘어갑니다.
자세한 설명
보내기 전에 음성 메모를 정리하는 방법무음과 헛시작을 잘라낸 뒤, 음량을 최대치 바로 아래까지 끌어올립니다. 브라우저 도구 두 개의 연결, 음질을 지키는 순서, 그리고 녹음은 컴퓨터를 떠나지 않습니다.
아닙니다. 읽고 편집하고 쓰는 일은 내 기기에서 도는 내 브라우저가 합니다. 이 도구에는 서버 쪽이라는 것이 없고, 이 페이지의 Content-Security-Policy에 연결해도 되는 주소가 전부 적혀 있는데 그중 이 사이트 것은 하나도 없습니다. 말로 듣기보다 직접 확인하고 싶다면, 인터넷을 끊고 그냥 음원을 거꾸로 돌려 보세요.
동영상에서 소리만 뽑을 수 있나요?
됩니다. 여기서는 MP3를 여는 것과 똑같은 일입니다. MP4, MOV, WebM을 넣으면 오디오 트랙만 디코딩됩니다. 화면은 아예 읽지 않고, 나오는 것은 영상이 들어 있지 않은 소리 파일입니다. 원하시는 것이 그것뿐이라면 — 소리를, 그대로 — 동영상에서 오디오 추출이 다른 것은 아무것도 없는 페이지에서 같은 일을 합니다. 소리도 손봐야 할 때 이리로 돌아오세요.
배속을 바꾸면 음정도 바뀌나요?
그렇게 해 달라고 할 때만 바뀝니다. "음정 유지"는 녹음을 50밀리초쯤 되는 겹치는 창으로 잘라, 파형이 만나는 지점이 맞아떨어지는 자리를 골라 더 촘촘하게 또는 더 성기게 다시 놓습니다. 그래서 1.5배속에서도 목소리는 같은 목소리로 남습니다. "함께 움직이게"는 대신 리샘플링을 하는데, 테이프를 빨리 감을 때 벌어지는 일과 같습니다. 2배속은 정확히 한 옥타브 위고요.
왜 MP3가 아니라 WAV로 저장하나요?
MP3 인코더를 갖고 있는 브라우저가 없고, 그렇다고 인코더가 있는 서버로 내 녹음을 보내는 일은 이 도구가 하지 않기 때문입니다. WAV는 인코더가 아예 필요 없습니다. 샘플 앞에 44바이트 헤더를 붙인 것이니까요. 그래서 정직한 선택이자 품질을 깎을 수 없는 유일한 선택입니다. 대신 큽니다. 스테레오로 1분에 10메가바이트쯤 되니까요. 어떤 플레이어도, 휴대폰도, 편집기도 WAV를 열고, MP3가 필요한 프로그램이라면 이걸로 MP3를 만들 수 있습니다.
어떤 형식을 열 수 있나요?
브라우저가 디코딩하는 것은 다 됩니다. 실제로는 MP3, WAV, FLAC, M4A와 AAC, Ogg Vorbis와 Opus, 그리고 MP4, M4V, MOV, WebM 동영상 안의 오디오입니다. 빠지는 것은 다른 곳과 같은 짧은 목록, AVI와 WMA와 대부분의 MKV입니다. 이 브라우저가 읽지 못하는 파일은 중간에 실패하는 대신 그렇다는 메시지와 함께 거부합니다.
소리를 키우면 찌그러지나요?
최대치를 넘길 때만 그렇고, 넘기기 전에 페이지가 알려 줍니다. 디지털 오디오에는 딱딱한 천장이 있습니다. 샘플은 최대치보다 커질 수 없어서, 그 위의 것은 천장에 눌려 납작해집니다. 그게 찌그러짐이에요. "최대한 크게"는 그런 일이 일어날 수 없는 설정입니다. 녹음에 남은 여유를 계산해 딱 그만큼만 쓰니까요. 천장 아래에서는 그저 곱셈일 뿐이라, 6 dB 올렸다가 6 dB 내리면 샘플은 시작한 자리로 돌아옵니다.
거꾸로 돌리거나 배속을 바꾸면 품질이 떨어지나요?
거꾸로 돌리는 것은 떨어지지 않습니다. 같은 샘플이 반대 순서로 나올 뿐이고, 이건 정확합니다. 배속을 바꾸는 것은 모든 샘플을 옮기는 일이라 복사가 아니라 계산입니다. 그래도 리샘플러가 지나가면서 제대로 필터링을 하기 때문에 빠르게 감아도 높은 음이 금속성 울림으로 되접히지 않고, 스트레처의 창도 계산이 떨어진 자리가 아니라 파형이 맞아떨어지는 자리에 놓입니다. 어느 쪽도 다시 인코딩하지 않습니다. 다시 인코딩할 인코더가 여기에 없으니까요.
파일 길이에 제한이 있나요?
도구에 정해 둔 제한은 없습니다. 현실적인 한계는 메모리입니다. 녹음 전체가 한 번에 이 페이지로 디코딩되고 내려받기 전에 WAV가 메모리에서 조립되므로, 스테레오 한 시간이면 1기가바이트에 조금 못 미치는 작업 공간이 필요합니다. 4기가바이트짜리 WAV는 아예 거부합니다. 형식 자체의 크기 필드가 그런 파일을 표현하지 못하니까요.
무료인가요? 가입해야 하나요?
무료이고 계정도, 로그인도, 체험판도, 워터마크도 없습니다. 이 사이트는 광고로 유지되는데, 그 광고에도 내 녹음에 관한 것은 넘어가지 않습니다.