말하기 속도 계산 방법: 분당 단어 수(WPM) 구하기

말하기 속도는 말한 단어 수를 분 단위 발화 시간으로 나눈 값입니다. 음성 인식의 단어별 타임스탬프로 녹음 전체나 문장마다 두 값을 모두 잴 수 있습니다.

읽는 시간 5분Sume
전체 글

말하기 속도를 계산하려면 말한 단어 수를 분 단위 발화 시간으로 나누세요. 2분 30초 동안 390단어를 말했다면 390 ÷ 2.5 = 분당 156단어(WPM)입니다. 단어별 타임스탬프가 있으면 두 값을 모두 얻을 수 있습니다. 녹음을 전사하고, 단어 토큰을 세고, 첫 단어의 시작부터 마지막 단어의 끝까지 걸린 시간을 재면 됩니다. Sume STT 1.0은 항상 단어 타이밍을 반환합니다. 각 단어의 start와 end를 초 단위로 담은 words[] 배열입니다.

공식 자체는 단순한 산수입니다. 타이밍 필드는 Sume API 레퍼런스의 바탕이 되는 OpenAPI 문서에서 가져왔으며, API 레퍼런스 문서 페이지는 정확한 요청·응답 형태의 기준으로 이 문서를 안내합니다. 2026-09-27에 확인했습니다.

어떤 시간으로 나눠야 하나요?

쉼을 포함하느냐에 따라 달라집니다. 정의를 하나 고르고, 어떤 정의를 썼는지 밝히고, 비교하는 모든 녹음에 같은 정의를 적용하세요.

Sume API 레퍼런스의 타이밍 필드 기준, 2026-09-27 확인.
속도단어 수를 나눌 시간쉼
전체 속도파일 전체 길이포함. 첫 단어 앞과 마지막 단어 뒤의 무음까지 포함
발화 속도첫 단어의 start부터 마지막 단어의 end까지단어 사이의 쉼 포함
조음 속도발화 구간에서 직접 정한 기준보다 긴 쉼을 뺀 시간긴 쉼 제외
문장 속도한 문장의 첫 단어 start부터 마지막 단어 end까지그 문장 안의 쉼만 포함

녹음의 단어별 타임스탬프는 어떻게 얻나요?

단어 타이밍을 반환하는 음성 인식 API로 전사하세요. Sume STT 1.0은 POST /v1/stt-1.0/transcribe에서 녹음의 공개 HTTPS URL을 받고, 따로 켤 플래그 없이 항상 단어 타이밍을 반환합니다. 요청 방법은 단어별 타임스탬프를 주는 음성 인식 API에 나와 있습니다. 필요한 결과 필드는 다음과 같습니다.

  • words[]: 각 토큰의 word, start, end입니다. 시간은 오디오 시작부터의 초 단위이며, start 순으로 정렬됩니다.
  • words[].type: 제공되는 경우 토큰의 종류로, 예를 들어 word나 spacing입니다. word 토큰만 세세요.
  • segments[]: text, start, end, duration_seconds가 담긴 문장들로, segmentation: { "mode": "sentence" }를 보내면 반환됩니다.
  • 요청 하나는 최대 10분 분량의 오디오(duration_seconds 1–600)를 처리하며, API 요금에 나온 오디오 분당 $0.01에 기본 5.5% 에이전트 수수료가 더해져 과금됩니다. 더 긴 녹음은 긴 오디오 파일 전사하기를 참고하세요.

타임스탬프로 분당 단어 수는 어떻게 계산하나요?

단어 토큰만 남긴 뒤 나누세요. 아래 예시 코드는 발화 속도와, 일 초보다 긴 쉼을 뺀 조음 속도를 계산합니다. 일 초라는 기준은 표준이 아니라 선택이므로, 속도를 보고할 때는 어떤 기준을 썼는지 밝히세요.

숫자, 축약형, 군말(filler)을 어떻게 셀지 정하고, 매번 같은 방식으로 세세요. 단어 사이를 띄어 쓰지 않는 언어에서는 대신 글자 수나 음절 수를 세세요.

// result = data.result from GET /v1/jobs/{id}/result
const words = result.words.filter((w) => (w.type ?? "word") === "word");
const first = words[0];
const last = words[words.length - 1];
const spanMinutes = (last.end - first.start) / 60;
const speakingWpm = words.length / spanMinutes;

// Articulation rate: leave out gaps longer than 1 second between words
let pauseSeconds = 0;
for (let i = 1; i < words.length; i++) {
  const gap = words[i].start - words[i - 1].end;
  if (gap > 1) pauseSeconds += gap;
}
const articulationWpm = words.length / (spanMinutes - pauseSeconds / 60);

문장마다 속도는 어떻게 구하나요?

문장 구간을 요청하고, 구간마다 그 안에 있는 단어를 세세요. 각 구간의 end가 다음 구간의 start와 같아 구간 사이에 빈틈이 없으므로, 구간의 duration_seconds에는 문장 사이의 무음이 들어갈 수 있습니다. 문장 자체의 속도를 재려면 그 문장의 첫 단어 start부터 마지막 단어 end까지의 시간을 쓰세요.

const sentenceRates = result.segments.map((s) => {
  const inside = words.filter((w) => w.start >= s.start && w.start < s.end);
  if (inside.length < 2) return { text: s.text, wpm: null };
  const minutes = (inside[inside.length - 1].end - inside[0].start) / 60;
  return { text: s.text, wpm: inside.length / minutes };
});

전사문 없이도 말하기 속도를 구할 수 있나요?

네, 대본을 쓰인 그대로 읽은 녹음이라면 가능합니다. 대본의 단어 수를 세고, 녹음에서 첫 단어부터 마지막 단어까지의 시간을 잰 뒤 나누세요. 화자가 애드리브를 하거나 줄을 건너뛰면 단어 수가 어긋나는데, 이때 전사문의 단어 타이밍이 도움이 됩니다.

반대로 녹음하기 전에 대본이 얼마나 길게 나올지 가늠하려면 60초에 들어가는 단어 수를 참고하세요.

출처

관련 글

미디어 도구 카테고리의 다른 글

미디어 도구 글 전체 보기

작성자 Sume