개요
타입캐스트 오토태그는 문장 속에 포함된 전화번호, 날짜, 시간, 금액 같은 복잡한 숫자나 기호를 TTS가 사람처럼 자연스럽게 읽을 수 있도록 미리 문장을 다듬어주는 텍스트 전처리 SDK입니다.
@neosapience/typecast-autotag
typecast-autotag
com.neosapience:typecast-autotag
소스, 이슈, 네이티브 바이너리
AutoTag를 사용해야 하는 이유
음성 애플리케이션을 구축할 때, 원본 텍스트는 자연스러운 음성으로 변환되기 어렵습니다:
| 입력 | AutoTag 없이 | AutoTag 사용 |
|---|---|---|
010-1234-5678 | "영 일 영 다시 일 이 삼 사 다시 오 육 칠 팔" | "공 . 일 . 공, 일 . 이 . 삼 . 사, 오 . 육 . 칠 . 팔" |
50000원 | "오만영원" | "오만원" |
14:30 | "십사콜론삼십" | "오후 두시 삼십분" |
AutoTag는 이러한 패턴을 자동으로 감지하고 자연스러운 음성으로 변환하여 음성 애플리케이션의 사용자 경험을 향상시킵니다.
언어 지원
JavaScript·브라우저 패키지는 SSFM v3.0 TTS 전체 언어를 지원합니다.
| 언어 단계 | 지원 범위 | 공식 코드 / 허용 별칭 |
|---|---|---|
| 한국어·영어 | 전체 패턴 | ko, kor, en, eng |
| 일본어·중국어 간체 | 핵심 TTS 패턴 | ja, jpn, zh, zho |
| 번체 한자권 음성 | 핵심 TTS 패턴 | zh-TW, nan, yue |
| 그 외 SSFM v3.0 언어 | 공통 TTS 패턴(31개) | 아래 공식 ISO 639-3 코드 |
SSFM v3.0 공식 언어 코드(37개): ara, ben, bul, ces, dan, deu, ell, eng, fin, fra, hin, hrv, hun, ind, ita, jpn, kor, msa, nan, nld, nor, pan, pol, por, ron, rus, slk, spa, swe, tam, tgl, tha, tur, ukr, vie, yue, zho.
추가로 허용하는 5개 값은 별도 공식 언어가 아닌 별칭 또는 로케일 태그입니다: ko → kor, en → eng, ja → jpn, zh → zho, zh-TW → 번체 중국어.
전용 규칙 모듈이 없는 31개 언어는 datetime, date, time, money, phone, percentage, range, unit, serial, number 패턴을 처리합니다. 로케일별 날짜 순서·월 이름·통화명·소수 구분자·12/24시간제와 주요 고유 숫자 문자를 적용합니다. nan과 yue는 각 TTS 음성 코드를 유지하면서 번체 중국어 패턴 파이프라인을 재사용합니다.
자연스러운 숫자 읽기, 날짜/시간 포맷팅 등을 포함한 한국어 텍스트 전처리를 완벽하게 지원합니다.
import { autoTag } from '@neosapience/typecast-autotag';
autoTag('전화번호는 010-1234-5678입니다.', { language: 'ko' });
// → '전화번호는, 공 . 일 . 공, 일 . 이 . 삼 . 사, 오 . 육 . 칠 . 팔 입니다.'
autoTag('총 금액은 50000원입니다.', { language: 'ko' });
// → '총 금액은 오만원 입니다.'
설치
공개 npm 패키지를 설치합니다:
pnpm add @neosapience/typecast-autotag
# 또는
npm install @neosapience/typecast-autotag
yarn add @neosapience/typecast-autotag
import { autoTag } from '@neosapience/typecast-autotag';
autoTag('전화번호는 010-1234-5678입니다.', { language: 'ko' });
빠른 시작
자동 태깅
텍스트에서 패턴을 자동으로 감지하고 변환합니다:
import { autoTag } from '@neosapience/typecast-autotag';
// 전화번호
autoTag('전화번호는 010-1234-5678입니다.', { language: 'ko' });
// → '전화번호는, 공 . 일 . 공, 일 . 이 . 삼 . 사, 오 . 육 . 칠 . 팔 입니다.'
// 날짜와 시간
autoTag('회의는 14:30에 시작합니다.', { language: 'ko' });
// → '회의는 오후 두시 삼십분 에 시작합니다.'
// 금액
autoTag('총 금액은 50000원입니다.', { language: 'ko' });
// → '총 금액은 오만원 입니다.'
수동 태깅
명시적인 태그 구문을 사용하여 정밀하게 제어합니다:
import { manualTag } from '@neosapience/typecast-autotag';
// 이름 철자 읽기 (글자별)
manualTag('안녕하세요, name(김철수)님.', { language: 'ko' });
// → '안녕하세요, 김 . 철 . 수님.'
manualTag('Your code is digits(2048).', { language: 'en' });
// → 'Your code is two zero four eight.'
조합 사용
자동 태그와 수동 태그를 함께 적용합니다:
import { autoTagWithManual } from '@neosapience/typecast-autotag';
autoTagWithManual('name(김철수)님, 010-1234-5678로 연락주세요.', { language: 'ko' });
// → '김 . 철 . 수님, 공 . 일 . 공, 일 . 이 . 삼 . 사, 오 . 육 . 칠 . 팔 로 연락주세요.'
지원 태그
언어별 지원 태그는 다릅니다. 정확한 런타임 목록은 getSupportedAutoTags(language)로 확인할 수 있습니다. 일본어·중국어 간체·대만 Mandarin은 지역 우편번호, 범위, 점수, 분수, 단위, 이메일 기호, 방향, 문맥형 일련번호·계좌·항공편 식별자, 성경 구절도 자동으로 인식합니다.
자동 태그 (자동 감지)
| 태그 | 설명 | 한국어 예시 | 영어 예시 |
|---|---|---|---|
phone | 전화번호 | 010-1234-5678 | 555-123-4567 |
datetime | 날짜와 시간 | 2024-01-15T14:30 | 2024-01-15T14:30 |
time | 시간 | 14:30 | 2:30 PM |
date | 날짜 | 2024-01-15 | January 15, 2024 |
money | 금액 | 50000원 | $1,500 |
year | 연도 | 2024년 | year 2024 |
month | 월 | 12월 | January |
day | 일 | 25일 | the 15th |
order | 순서 | 3번째 | 1st place |
point | 점수 | 95점 | 95 points |
ratio | 비율/퍼센트 | 50%, 1:2 | 50%, 1:2 |
weight | 무게 | 5kg | 5kg, 100lb |
distance | 거리 | 5km | 5km, 100m |
temperature | 온도 | 25℃ | 25°C, -5°F |
volume | 용량 | 500ml | 500ml, 2L |
dataCapacity | 데이터 용량 | 100GB | 100GB, 50Mbps |
수동 전용 태그
| 태그 | 설명 | 구문 | 출력 |
|---|---|---|---|
name | 이름 (글자별) | name(김철수) | 김 . 철 . 수 |
digits | 숫자 (자리별) | digits(1234) | 일 . 이 . 삼 . 사 |
address | 주소 (한국어 전용) | address(102동 1101호) | 백이동 천백일호 |
AICC 사용 사례
자연스러운 음성이 중요한 AI 컨택센터 애플리케이션에 완벽합니다:
import { autoTagWithManual } from '@neosapience/typecast-autotag';
// 고객 서비스 스크립트
const customerName = '김철수';
const orderNumber = '1234';
const deliveryDate = '2024년 1월 15일';
const supportPhone = '010-1234-5678';
const script = autoTagWithManual(`
안녕하세요, name(${customerName})님.
주문번호 ${orderNumber} 상품이 ${deliveryDate}에 배송될 예정입니다.
문의사항은 ${supportPhone}으로 연락주세요.
`, { language: 'ko' });
// 출력:
// "안녕하세요, 김 . 철 . 수님.
// 주문번호 천이백삼십사 상품이 이천이십사년 일월 십오일 에 배송될 예정입니다.
// 문의사항은, 공 . 일 . 공, 일 . 이 . 삼 . 사, 오 . 육 . 칠 . 팔 으로 연락주세요."
Typecast TTS와 연동
AutoTag를 Typecast TTS API와 결합하여 최상의 음성 경험을 제공하세요:
import { autoTagWithManual } from '@neosapience/typecast-autotag';
import { TypecastClient } from '@neosapience/typecast-js';
const client = new TypecastClient({ apiKey: 'YOUR_API_KEY' });
// AutoTag로 원본 텍스트 전처리
const rawText = '잔액은 1,234,567원입니다. 문의는 1588-1234로 전화주세요.';
const processedText = autoTagWithManual(rawText, { language: 'ko' });
// Typecast TTS로 전송
const audio = await client.textToSpeech({
text: processedText,
model: 'ssfm-v30',
voice_id: 'tc_672c5f5ce59fac2a48faeaee'
});
플랫폼 지원
개발 언어
| 언어 | 버전 | 설치 경로 | 텍스트 언어 |
|---|---|---|---|
| Node.js | ≥18 | npm의 @neosapience/typecast-autotag | 공식 코드 37개 + ko, en, ja, zh, zh-TW 별칭 |
| Browser | Modern | @neosapience/typecast-autotag ESM/UMD 번들 | 공식 코드 37개 + ko, en, ja, zh, zh-TW 별칭 |
| Python | ≥3.8 | PyPI의 typecast-autotag | ko, en |
| Java | ≥8 | Maven Central의 com.neosapience:typecast-autotag | ko, en |
| C/C++ | Any | Releases의 미리 빌드된 바이너리 또는 pnpm c-binding:build-all-multiarch | ko, en |
서버 플랫폼
| 플랫폼 | 상태 |
|---|---|
| Linux | 지원 (CentOS 6.9+, Amazon Linux 2+, Ubuntu, Debian) |
| macOS | 지원 (Intel & Apple Silicon) |
| Windows | 지원 (Windows 10+) |
아키텍처
| 아키텍처 | 상태 |
|---|---|
| x86_64 (AMD64) | 지원 |
| x86 (32비트) | 지원 |
| arm64 (AArch64) | 지원 |
| armv7 (32비트 ARM) | 지원 |