PRIVACY
개인정보처리방침
Vocal Check는 계정을 만들지 않습니다. 마이크 소리는 이 브라우저 메모리에서 음정을 계산하는 데만 쓰이고, 녹음 파일로 저장되거나 서버로 전송되지 않습니다.
기준일 . 이 설명은 이날의 앱 코드와 배포 설정을 기준으로 합니다.
운영자
Vocal Check는 Still Coding의 웹 앱이며 운영자는 JH Kim입니다. 이 앱에는 문의 폼이 없습니다. 연락은 문의에 적힌 GitHub 경로로 보냅니다. 포털의 공통 안내도 Still Coding 개인정보처리방침에 있습니다.
마이크에서 일어나는 일
사용자가 마이크 켜고 시작하기를 누른 뒤에만 브라우저 마이크를 요청합니다. 받은 소리는 Web Audio의 AnalyserNode로 읽고, 약 4096개 샘플 버퍼에서 YIN 알고리즘으로 기본 주파수를 계산합니다. 계산 주기는 약 65밀리초입니다. 새 버퍼는 이전 버퍼 자리를 덮어 쓰며, 파일로 기록하지 않습니다.
가능하면 에코 제거, 잡음 억제, 자동 음량을 끈 상태로 요청합니다. 장치가 그 조건을 거부하면 브라우저 기본 설정으로 한 번 더 연결하고, 화면에 그 사실을 표시합니다. 브라우저나 운영체제가 자체적으로 입력 처리를 할 수 있습니다.
앱 코드에는 MediaRecorder, 업로드 요청, 웹소켓, 분석 스크립트가 없습니다. 마이크를 끄거나, 탭을 떠나거나, 페이지를 닫으면 마이크 트랙을 즉시 중지합니다.
메모리에 잠시 남는 것
- 최근 몇 프레임의 주파수 숫자. 화면의 음정을 안정시키기 위한 값이며 소리를 끄면 비웁니다.
- 최근 12초 그래프의 시각과 음정 위치. 파형이 아니라 음정 숫자입니다. 초기화, 마이크 종료, 탭 이탈, 페이지 종료 때 사라집니다.
- 기준 피아노 음은
piano.js가 이 브라우저에서 합성합니다. 녹음된 피아노 파일을 내려받지 않습니다.
앱은 고른 언어를 저장하지 않고 쿠키나 localStorage를 만들지 않습니다. 언어를 바꿀 때만 이 탭의 sessionStorage 키 vocal-check-locale-handoff에 연습 모드, 목표 음, 기준 주파수, 최근 12초 음정 숫자를 잠시 넣습니다. 새 페이지가 그 값을 읽으면 바로 지웁니다. 주소의 언어가 우선이므로 /en/을 직접 열면 영어가, 기본 주소를 직접 열면 한국어가 나옵니다. 다른 브라우저나 다른 기기와 연습 기록이 동기화되지 않습니다.
네트워크로 나가는 것
페이지 자체는 Cloudflare Workers의 정적 파일로 제공됩니다. 이 저장소의 배포 설정은 Workers observability를 켜지 않았고, 소리를 받는 서버 주소도 없습니다. 페이지를 열 때 주소, 시각, IP, 브라우저 정보 같은 요청 기록은 Cloudflare의 운영 로그에 남을 수 있으며, 보관 기간은 이 앱 코드가 아니라 Cloudflare 계정 설정을 따릅니다. 그 요청에는 마이크 소리가 실리지 않습니다.
화면 글꼴은 fonts.googleapis.com과 fonts.gstatic.com의 Google Fonts(DM Sans, Noto Sans KR)를 불러옵니다. 이때 브라우저가 글꼴 요청과 함께 IP, 사용자 에이전트 같은 일반 연결 정보를 Google에 보냅니다. 마이크 소리는 이 요청에 포함되지 않습니다.
분석 도구나 광고 스크립트는 넣지 않았습니다. 한국어 화면에는 초대된 테스터만 볼 수 있는 피드백 버튼이 있을 수 있습니다. 버튼은 user-feedback.still-coding.cc가 세션을 확인한 뒤에만 나타나고, 영어 화면에는 두지 않습니다. 테스터가 직접 적은 내용과 직접 고른 이미지만 그 서비스로 전송됩니다. 마이크 소리, 화면 캡처, 페이지 주소, 콘솔 기록은 자동으로 보내지 않습니다. 비밀번호, API 키, 고객 정보, 비공개 코드는 적지 않아야 합니다. 접수 내역은 운영자만 보고, 보관 중인 피드백 삭제는 문의로 요청할 수 있습니다.
광고
지금은 광고 스크립트, 게시자 ID, ads.txt를 넣지 않습니다. 게시자 계정이 확인되기 전에는 광고 코드를 올리지 않습니다. 유럽 경제 지역, 영국, 스위스의 개인 맞춤 광고에 필요한 동의 도구도, 맞춤 광고를 하지 않으므로 넣지 않습니다.
나중에 광고를 검토할 후보는 읽기 문서인 사용 가이드뿐입니다. 한국어 /guide/와 영어 /en/guide/가 같은 후보이고 data-ad-eligible="true"입니다. 광고 칸은 아직 만들어 두지 않았습니다. 언어를 바꿔도 이 구분은 바뀌지 않습니다.
한국어와 영어 모두, 튜너, 실시간 측정, 마이크 시작, 목표 음, 건반, 12초 그래프, 사용법 창, 권한 오류 안내, 개인정보, 문의, 없는 주소는 광고 비적격입니다. 튜너는 광고 태그가 있으면 제거하고 data-ad-eligible="false"를 유지합니다. 자동 광고를 측정 화면에 일괄로 켜지 않습니다.
권한과 삭제
마이크 권한은 브라우저와 기기가 기억합니다. 앱이 별도의 계정 목록을 갖지 않으므로, 권한은 브라우저의 사이트 설정에서 차단하거나 삭제하면 됩니다. 화면에 남은 12초 그래프는 초기화하거나 마이크를 끄면 메모리에서 사라집니다.
GitHub으로 보낸 문의는 그 서비스에 남습니다. 음성 파일이나 비밀번호는 보내지 않아도 문제를 확인할 수 있습니다.