
이 글의 내용
Fish Audio S2.1, CosyVoice3-RL, IndexTTS2, Qwen3-TTS Base를 소수, 식별자, 통화, 수식, 과학 단위가 포함된 중국어 음성 복제 샘플 600개로 평가했습니다.
요약
숫자 읽기 오류는 단순한 발음 문제가 아니라 의미 문제입니다. TTS 시스템은 매우 유창하게 들리면서도 식별자의 0을 누락하거나, 9*14를 94로 읽거나, 면적 단위에서 지수를 제거할 수 있습니다. 중국어에서는 001000000066, 9*14, 12cm²의 올바른 읽기가 기호 자체뿐 아니라 문장 속 역할에 따라 달라지기 때문에 이 문제가 특히 뚜렷하게 나타납니다.
내부 데이터셋의 중국어 참조 음성 2개를 사용해 Fish Audio S2.1, CosyVoice3-RL, IndexTTS2, Qwen3-TTS Base 등 4개 음성 복제 모델군을 평가했습니다. 각 모델·음성 조건에 동일한 비즈니스 문장 75개를 입력해 총 600개의 음성 샘플을 생성했습니다.
자동 숫자 완전 일치율에서는 Fish Audio S2.1이 79.3%(119/150)로 1위, CosyVoice3-RL이 74.7%(112/150)로 2위였습니다. 그러나 종합 점수만으로는 모델별 차이를 설명할 수 없습니다. CosyVoice3-RL은 식별자에서 90.0%를 기록한 반면, Qwen3-TTS Base는 식별자에서 0%였지만 수식과 과학 단위에서는 각각 86.7%로 가장 높았습니다.
이 평가는 사람의 청취 테스트가 아니라 자동 선별용 벤치마크입니다. 부록 B에는 별도로 생성한 듣기 세트를 제공하며, 이 클립들은 벤치마크 샘플이 아닙니다.
숫자 TTS가 의미 문제인 이유
숫자를 정확히 읽는 것과 각 숫자를 또렷하게 발음하는 것은 다릅니다. TTS 모델은 먼저 문장 안에서 숫자가 어떤 역할을 하는지 판단해야 합니다.
| 표시 텍스트 | 의도한 중국어 읽기 | 모델이 판단해야 하는 내용 |
|---|---|---|
3786.712 | 三千七百八十六点七一二 | 소수점 뒤 숫자는 한 자리씩 유지해야 한다. |
001000000066 | 零零一零零零零零零零六六 | 식별자는 일반 수가 아니라 숫자의 순서열이다. |
HK$100 | 一百港元 | 접두사가 통화를 지정하며, $100만으로는 지역 통화를 특정할 수 없다. |
9*14 | 九乘以十四 | 기호는 문장부호가 아니라 연산자다. |
12cm^2 | 十二平方厘米 | 지수는 길이 단위를 면적 단위로 바꾼다. |
따라서 유창한 문장에도 심각한 숫자 오류가 포함될 수 있습니다. 식별자, 금액, 측정값, 수식에서는 작은 발음 차이보다 더 큰 문제가 됩니다.
벤치마크 개요
| 항목 | 설계 |
|---|---|
| 범위 | 음성 복제 조건만 평가 |
| 모델군 | Fish Audio S2.1, CosyVoice3-RL, IndexTTS2, Qwen3-TTS Base |
| 참조 음성 | 내부 데이터셋의 중국어 참조 음성 2개 |
| 모델군별 프롬프트 수 | 150개: 프롬프트 75개 × 참조 음성 2개 |
| 전체 음성 | 생성된 WAV 파일 600개 |
| 숫자 범주 | 소수, 식별자, 통화, 수식, 과학·공학 단위 |
| 범주별 프롬프트 수 | 모델·음성 조건별 15개 |
| 입력 정책 | 아라비아 숫자 표기가 포함된 문장을 그대로 전송 |
| 통화의 모호성 | 단독 $와 ¥는 기호 계열 수준에서 채점하고, 명시적 코드나 통화명에는 정확한 통화를 요구 |
| 최종 판정 ASR | 고정 리비전의 Qwen3-ASR-1.7B |
| 주요 지표 | 숫자 목표와의 의미적 완전 일치 |
실험 설계
1. 균형 잡힌 다섯 개 프롬프트 그룹 구성
각 모델·음성 조건에 중국어 문장 75개를 사용했습니다. 다섯 개 숫자 범주에 각각 15개 프롬프트를 배정했습니다.
- 소수는 내부의 0, 반복되는 숫자, 소수부 끝의 0을 테스트했습니다.
- 식별자는 앞부분과 중간에 반복되는 0이 있고 일반 수로 묶어 읽으면 안 되는 합성·비식별 장문 숫자열을 사용했습니다.
- 통화는 USD, CNY, JPY, CAD, AUD, SGD, HKD와 모호한
$,¥를 포함했습니다. - 수식은 곱셈과 나눗셈, 그리고
二分之三과三除以二같은 동등한 읽기를 포함했습니다. - 과학·공학 단위는
cm,µm,nm을 포함했습니다.
각 문장은 하나의 템플릿에 값만 바꿔 넣지 않고, 비즈니스, 엔지니어링, 물류, 운영 상황에서 자연스럽게 쓰일 수 있도록 개별 작성했습니다.
2. 참조 음성 고정
4개 모델군 모두 내부 데이터셋의 동일한 중국어 참조 음성 2개를 복제했습니다.
점수는 두 참조 음성을 합산해 모델군별 150개 샘플로 계산했습니다.
3. 화면에 표시된 문장을 그대로 전송
이 벤치마크는 합성 전에 숫자를 읽기 형태로 풀어 쓰지 않았습니다.
예:
| |
숫자를 다음과 같은 기대 읽기로 바꾸지 않았습니다.
| |
이렇게 해야 모델 자체의 텍스트 정규화 동작을 분리해 측정할 수 있습니다. 실제 서비스에서는 중요한 숫자를 미리 풀어 쓰는 편이 더 안전할 수 있지만, 이번 평가에서 그렇게 하면 측정하려는 질문 자체가 사라집니다.
4. 음성 생성 및 형식 정규화
오픈 웨이트 모델은 고정된 체크포인트에서 실행했고, 지원되는 경우 결정적 시드를 사용했습니다. Fish Audio S2.1의 모든 요청에는 normalize=true를 설정했습니다. 서비스는 일반 지연 모드로 실행했으므로, 이 점수는 공급자 정규화기가 활성화된 Fish Audio S2.1의 결과입니다.
각 공급자의 출력을 모노, 24 kHz, 16-bit PCM WAV로 통일한 뒤 채널 수, 샘플링 레이트, 샘플 폭, 디코딩 가능 여부를 확인했습니다.
생성된 600개 샘플 모두 형식 검사를 통과했습니다.
5. 전사 및 숫자 의미 채점
모든 생성 파일을 동일한 고정 리비전의 Qwen/Qwen3-ASR-1.7B로 전사했습니다. ASR 전사와 목표를 범주별 정규형으로 변환한 뒤 완전 일치를 요구했습니다. 따라서 주변 문장이 유창해도 0 누락, 연산자 변경, 통화 불일치, 지수 누락이 있으면 실패로 처리했습니다. 범주별 규칙은 글 마지막의 부록에 정리했습니다.
결과

결과는 내부 참조 음성 2개를 합산한 값입니다. 통화 출력은 부록의 모호성 인지 정책에 따라 저장된 검증 전사에서 다시 채점했습니다. 종합 점수는 모델군별 150개, 범주 점수는 각각 30개 샘플을 기준으로 합니다.
Fish Audio S2.1이 종합 79.3%로 1위였지만, 모든 범주에서 우승한 모델은 없었습니다. 같은 숫자라도 식별자, 소수, 금액, 수식, 단위 중 무엇을 나타내는지에 따라 모델의 실패 양상이 크게 달랐습니다.
식별자: 모델 간 격차가 가장 큰 범주
| 모델군 | 완전 일치(n=30) |
|---|---|
| Fish Audio S2.1 | 66.7% |
| CosyVoice3-RL | 90.0% |
| IndexTTS2 | 40.0% |
| Qwen3-TTS Base | 0.0% |
식별자는 모델 간 점수 차가 가장 컸습니다. 주요 문제는 발음 품질이 아니라 순서열의 무결성이었습니다. 숫자를 묶어서 읽거나, 반복된 0을 빼거나, 숫자를 하나 더 넣는 오류가 나타났습니다.
소수: 전반적으로 안정적
| 모델군 | 완전 일치(n=30) |
|---|---|
| Fish Audio S2.1 | 93.3% |
| CosyVoice3-RL | 96.7% |
| IndexTTS2 | 100.0% |
| Qwen3-TTS Base | 93.3% |
소수는 가장 안정적인 범주였습니다. 익숙한 말하기 구조가 있기 때문에 모든 자리의 위치를 엄격하게 유지해야 하는 식별자보다 쉬웠습니다.
통화: 금액과 기호를 분리해 판단
| 모델군 | 완전 일치(n=30) |
|---|---|
| Fish Audio S2.1 | 93.3% |
| CosyVoice3-RL | 46.7% |
| IndexTTS2 | 93.3% |
| Qwen3-TTS Base | 86.7% |
발화된 금액과 통화 의미를 분리해 판단했습니다. 단독 $는 특정 지역 통화를 유일하게 지정하지 않지만, CAD 또는 加拿大元이 명시된 입력은 캐나다 달러 읽기가 필요합니다. 채점 샘플에서 Fish Audio S2.1은 명시적인 HK$100을 미국 달러로 읽었고, CosyVoice3-RL의 실패 대부분은 금액 자체를 바꿨습니다.
수식: 연산자가 쉽게 사라짐
| 모델군 | 완전 일치(n=30) |
|---|---|
| Fish Audio S2.1 | 73.3% |
| CosyVoice3-RL | 70.0% |
| IndexTTS2 | 70.0% |
| Qwen3-TTS Base | 86.7% |
숫자만 들으면 자연스럽더라도 의미적으로는 실패할 수 있습니다. 곱셈 연산자가 사라지면 9*14가 94가 됩니다.
과학·공학 단위: 지수를 보존해야 함
| 모델군 | 완전 일치(n=30) |
|---|---|
| Fish Audio S2.1 | 70.0% |
| CosyVoice3-RL | 70.0% |
| IndexTTS2 | 66.7% |
| Qwen3-TTS Base | 86.7% |
기본 숫자와 단위를 알아들을 수 있어도 제곱 지수가 사라지면 면적 측정의 의미가 달라집니다.
모델별 요약
| 모델군 | 종합(n=150) | 핵심 결과 |
|---|---|---|
| Fish Audio S2.1 | 79.3% | 종합 1위. 가장 약한 식별자도 66.7% |
| CosyVoice3-RL | 74.7% | 식별자 1위. 통화에서는 금액을 바꾸는 오류가 잦음 |
| IndexTTS2 | 74.0% | 소수 100%. 식별자에서는 크게 하락 |
| Qwen3-TTS Base | 70.7% | 수식, 통화, 단위에 강하지만 식별자는 전부 실패 |
재현성 정보
| 구성 요소 | 고정 조건 |
|---|---|
| Qwen3-TTS Base | Qwen3-TTS-12Hz-1.7B-Base, revision fd4b254389122332181a7c3db7f27e918eec64e3 |
| CosyVoice3-RL | Fun-CosyVoice3-0.5B-2512_RL, revision 29e01c4e8d000f4bcd70751be16fa94bf3d85a18 |
| IndexTTS2 | IndexTTS2, revision 740dcaff396282ffb241903d150ac011cd4b1ede |
| Fish Audio S2.1 | 합성 서비스, 일반 지연 모드, normalize=true |
| 판정 ASR | Qwen/Qwen3-ASR-1.7B, revision 7278e1e70fe206f11671096ffdd38061171dd6e5 |
한계
- 판정기는 중국어 원어민 청취 패널이 아니라 ASR 모델입니다. ASR 오류를 TTS 오류로 잘못 볼 수 있습니다.
- 내부 참조 음성 2개가 모든 중국어 화자, 억양, 음높이, 녹음 조건을 대표하지는 않습니다.
- 벤치마크는 화면 표기를 그대로 입력합니다. 실제 서비스의 텍스트 정규화 계층은 결과를 크게 개선할 수 있습니다.
- 백분율은 두 음성을 합산한 모델군·범주별 30개 샘플을 기반으로 합니다. 작은 차이를 과도하게 해석하면 안 됩니다.
- 공급자 서비스와 모델 구현은 고정된 평가일 이후 변경될 수 있습니다.
결론
중국어 숫자 TTS에서 모든 범주를 지배하는 모델은 없었습니다.
Fish Audio S2.1은 가장 균형 잡힌 모델군이었고 종합 79.3%로 1위였습니다. CosyVoice3-RL은 식별자에 가장 강했습니다. IndexTTS2는 소수에서 100%였지만 긴 숫자열에는 약했습니다. Qwen3-TTS Base는 기호 중심의 세 범주에서 가장 강했지만 식별자는 모두 실패했습니다.
순위보다 중요한 교훈은 숫자 의미가 별도의 신뢰성 축이라는 점입니다. 읽은 숫자가 결제, 측정, 경로, 신원, 접근 권한 판단을 바꿀 수 있다면 명시적으로 정규화하고 합성 후 다시 검증해야 합니다.
부록 A: 범주별 정규화 규칙
| 범주 | 정규화 절차와 완전 일치 조건 |
|---|---|
| 소수 | 아라비아 숫자와 중국어 수사를 소수 형태로 변환하되, 끝의 0을 포함한 소수부의 모든 자릿수를 보존한다. |
| 식별자 | 전체 숫자열을 추출하고 幺를 1로 정규화하며, 앞의 0, 순서, 길이를 보존한다. |
| 통화 | 금액을 정규화한 다음 입력 표기에서 허용 통화를 결정한다. 단독 $는 달러 계열 읽기를, 단독 ¥는 人民币 또는 日元을 허용한다. US$, HK$, JPY 또는 통화명이 명시되면 해당 중국어 통화 읽기를 요구한다. |
| 수식 | 먼저 중국어 또는 아라비아 숫자를 수치 피연산자로 변환한다. 이어서 乘/乘以/×/*는 multiply, 除以///÷/分之는 divide로 통일한다. A分之B는 B ÷ A를 뜻하므로 저장할 때 표면상의 피연산자 순서를 뒤집는다. 마지막으로 결과를 계산하지 않고 연산자와 순서가 있는 피연산자를 완전 일치로 비교한다. 따라서 三除以二와 二分之三은 모두 3/2와 일치하지만, 결과만 읽은 一点五는 연산자가 없어 실패한다. |
| 과학·공학 단위 | 먼저 수치를 정규화한다. 이어서 厘米/cm, 微米/µm, 纳米/奈米/nm 같은 음성·표기 별칭을 하나의 기본 단위로 통일한다. 平方, ², ^2는 지수 2로 기록하고 별도 표시가 없으면 지수 1로 기록한다. 수치, 기본 단위, 지수가 모두 일치해야 통과한다. 따라서 12cm²와 十二平方厘米는 통과하지만, 十二厘米는 지수가 2에서 1로 바뀌므로 실패한다. |
부록 B: 공개 오디오 예시
듣기 예시를 제공하는 이유: 집계 점수는 모델이 의도한 읽기를 얼마나 자주 생성했는지는 보여 주지만, 오류가 실제로 어떻게 들리는지는 보여 주지 않습니다. 이 예시에서는 숫자 누락이나 묶음 읽기, 소수 구조 변경, 연산자 또는 지수 누락과 같은 주요 실패 양상을 직접 들을 수 있습니다. 이 20개 클립은 듣기 위한 별도의 데모 세트일 뿐이며, 600개 샘플 벤치마크에 포함되지 않았고 보고된 백분율 계산에도 사용되지 않았습니다.
데모에 사용한 합성 참조 음성
네 시스템 모두 동일한 AI 생성 Qwen3-TTS Serena 음성을 참조로 사용했습니다. 먼저 이 음성을 들으면 아래 데모들이 재현하려 한 공통 음성을 확인할 수 있습니다.
참조 텍스트: 今天我们将讨论项目进度、客户反馈与后续安排。请各位确认会议内容,并在结束后整理需要继续跟进的事项,感谢大家的配合。
식별자 예시
입력: 维修平台确认,本次设备校验码为001000000066。
목표: 零零一零零零零零零零六六
| 모델군 | 예시 오디오와 ASR 전사 | 확인할 점 |
|---|---|---|
| Fish Audio S2.1 | 零零幺零零零零零零六六 | 0 하나 누락 |
| CosyVoice3-RL | 零零幺零零零零零零零六六 | 모든 숫자 보존 |
| IndexTTS2 | 零零幺零零零零零零六六 | 0 하나 누락 |
| Qwen3-TTS Base | 零零幺零零万零六六 | 숫자를 묶어 읽고 일부 누락 |
소수 예시
입력: 值班工程师在电话会上报告:“主回路当前读数是3168.846。”
목표: 三千一百六十八点八四六
| 모델군 | 예시 오디오와 ASR 전사 | 확인할 점 |
|---|---|---|
| Fish Audio S2.1 | 三幺六八八四六 | 소수 구조가 사라짐 |
| CosyVoice3-RL | 三千一百六十八点八四六 | 목표 읽기 보존 |
| IndexTTS2 | 三千一百六十八点八四六 | 목표 읽기 보존 |
| Qwen3-TTS Base | 三千一百六十八点八四六 | 목표 읽기 보존 |
통화 예시
입력: 设计负责人提醒大家,加拿大外包插画的尾款还有$640未付。
허용 목표: 금액 640과 달러 계열임을 나타내는 읽기
| 모델군 | 예시 오디오와 ASR 전사 | 확인할 점 |
|---|---|---|
| Fish Audio S2.1 | 六百四十美元 | 금액과 달러 계열 읽기 보존 |
| CosyVoice3-RL | 六百四十美元 | 금액과 달러 계열 읽기 보존 |
| IndexTTS2 | 六百四十美元 | 금액과 달러 계열 읽기 보존 |
| Qwen3-TTS Base | 六百四十美元 | 금액과 달러 계열 읽기 보존 |
수식 예시
입력: 生成标签底稿时,把画布网格参数填写为9*14。
목표: 九乘以十四
| 모델군 | 예시 오디오와 ASR 전사 | 확인할 점 |
|---|---|---|
| Fish Audio S2.1 | 九州十四 | 곱셈 연산자를 인식하지 못함 |
| CosyVoice3-RL | 九十四 | 곱셈 연산자 누락 |
| IndexTTS2 | 九掺十四 | 곱셈 연산자를 인식하지 못함 |
| Qwen3-TTS Base | 九乘以十四 | 목표 읽기 보존 |
과학·공학 단위 예시
입력: 封装测试要求导热贴的接触面积达到12cm^2。
목표: 十二平方厘米
| 모델군 | 예시 오디오와 ASR 전사 | 확인할 점 |
|---|---|---|
| Fish Audio S2.1 | 十二厘米定二 | 제곱 면적 의미가 사라짐 |
| CosyVoice3-RL | 十二厘米二 | 제곱 면적 의미가 사라짐 |
| IndexTTS2 | 十二厘米,S二 | 제곱 면적 의미가 사라짐 |
| Qwen3-TTS Base | 十二厘米方 | 제곱센티미터 의미가 사라짐 |


