複雑な数式を含むテキストを流暢で正確な音声に変換することは、オーディオブックやオンライン教育などのシナリオにおける課題です。CosyVoice は、テキストに埋め込まれた数式を解析し、自然な方法で読み上げます。この機能は、数学や物理学などの主題のコンテンツのリスニング体験を大幅に向上させます。
この機能は、中国語での音声合成のみをサポートしています。他の言語では数式が正しく発音されない場合があります。この Topic のすべての発音例は翻訳であり、実際のパフォーマンスを表すものではありません。
手順
テキスト内の数式を特定の区切り文字で囲み、音声合成 API を呼び出します。
区切り文字で数式をマークする
数式を次のいずれかの区切り文字で囲みます。これにより、エンジンが数式を検出して解析できるようになります。
区切り文字の選択は合成結果に影響しません。次のいずれかのフォーマットを使用できます。
$...$$$...$$\(...\)\[...\]
例:
2 次方程式の解の公式は、$x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}$ です。慎重に計算してください。API を呼び出して音声合成をリクエストする
マークされた数式を含むテキストで音声合成 API を呼び出します。JSON 形式のリクエスト本文または文字列リテラルでは、バックスラッシュ (
\) はエスケープ文字であることに注意してください。したがって、\\と記述する必要があります。呼び出し例 (Python):
# coding=utf-8 import dashscope from dashscope.audio.tts_v2 import * # API キーが環境変数として設定されていない場合は、'your-api-key' を実際の API キーに置き換えてください。 # dashscope.api_key = "your-api-key" # モデル model = "cosyvoice-v2" # 音声 voice = "longxiaochun_v2" # SpeechSynthesizer をインスタンス化し、モデルや音声などのリクエストパラメーターをコンストラクターに渡します。 synthesizer = SpeechSynthesizer(model=model, voice=voice) # 合成するテキストを送信して、バイナリ音声データを取得します。 audio = synthesizer.call("2 次方程式の解の公式は、$x = \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a}$ です。慎重に計算してください。") # 初めてテキストを送信すると、WebSocket 接続が確立されます。 # したがって、最初のパケットの待機時間には、接続の確立にかかる時間が含まれます。 print('[Metric] Request ID: {}, First-packet latency: {} ms'.format( synthesizer.get_last_request_id(), synthesizer.get_first_package_delay())) # 音声をローカルファイルに保存します。 with open('output.mp3', 'wb') as f: f.write(audio)
サポートされているタグと記号
次の表に、現在サポートされているタグと記号を示します。
基本的な数学
タグまたは記号 | 関数 | 数式コンテンツの例 | 数式入力の例 | 発音 |
+ | 加算 | 2 + 3 = 5 | $2 + 3 = 5$ | 2 プラス 3 は 5 |
- | 減算 | 3 - 2 = 1 | $3 - 2 = 1$ | 3 マイナス 2 は 1 |
\pm | プラスマイナス | \pm 1 \pm 2 | $\pm 1\pm 2$ | プラスマイナス 1、プラスマイナス 2 |
正または負 | ||||
\times | 乗算 | 2 \times 3 = 6 | $2 \times 3 = 6$ | 2 掛ける 3 は 6 |
× | 2 × 3 = 6 | $$2 × 3 = 6$$ | ||
* | 2 * 3 = 6 | \(2 * 3 = 6\) | ||
\div | 除算 | 6\div2=3 | \[6\div2=3\] | 6 割る 2 は 3 |
÷ | 6÷2=3 | $6÷2=3$ | ||
/ | 6/2=3 | $6/2=3$ | ||
= | 等しい | 3+5=8 | $3+5=8$ | 3 プラス 5 は 8 |
< | 小なり | 1< 2 | $1< 2$ | 1 は 2 より小さい |
≤ | 以下 | 3≤5 | $3≤5$ | 3 は 5 以下 |
<= | 3<=5 | $3<=5$ | ||
\leq | 3\leq5 | $3\leq 5$ | ||
\le | 3\le5 | $3\le 5$ | ||
\leqq | 3\leqq5 | $3\leqq 5$ | ||
\leqslant | 3\leqslant5 | $3\leqslant 5$ | ||
> | 大なり | 2>1 | $2>1$ | 2 は 1 より大きい |
≥ | 大なりイコール | 5≥3 | $5≥3$ | 5 は 3 以上 |
>= | 5>=3 | $5>=3$ | ||
\geq | 5\geq3 | $5\geq 3$ | ||
\ge | 5\ge3 | $5\ge 3$ | ||
\geqq | 5\geqq3 | $5\geqq 3$ | ||
\geqslant | 5\geqslant3 | $5\geqslant 3$ | ||
\frac | スコア | 2\frac3 | $\frac {2}{3}$ | 3 分の 2 |
^ | べき乗 | 2^1 | $2^{1}$ | 2 の 1 乗 |
\sqrt | 根 | \sqrt{9} = 3 | $\sqrt {9} = 3$ | 9 の平方根は 3 |
\sqrt[3]{8} = 2 | $\sqrt[3]{8} = 2$ | 8 の 3 乗根は 2 | ||
\% | パーセンテージ | 5\% | $5\%$ | 5 パーセント |
| | 絶対値 | ∣3∣=3 | $|3| =3$ | 3 の絶対値は 3 |
\vert | 3\vert=3 | $\vert 3\vert =3$ | 3 の絶対値は 3 | |
\lg | 対数 | lg {10} | $\lg {10}$ | ログ 10 |
\log | 対数 | \log{5} | $\log{5}$ | ログ 5 |
\ln | 自然対数 | \lnX | $ln {10}$ | LN 10 |
! | 階乗 | 5! | $5!$ | 5 の階乗 |
() | 括弧 | (2+1) | $(2+1)$ | 括弧内の 2 プラス 1 |
\{ \} | $\{2+1\}$ | 始め波括弧、2 プラス 1、終わり波括弧 |
特殊な数学記号
タグまたは記号 | 変換 | 数式コンテンツの例 | 数式入力の例 | 発音 |
\alpha | アルファ | \alpha | $\alpha$ | アルファ
|
\Alpha | \Alpha | $\Alpha$ | ||
\beta | ベータ | \beta | $\beta$ | ベータ
|
\Beta | \Beta | $\Beta$ | ||
\gamma | ガンマ | \gamma | $\gamma$ | ガンマ
|
\Gamma | \Gamma | $\Gamma$ | ||
\delta | デルタ | \delta | $\delta$ | デルタ
|
\Delta | \Delta | $\Delta$ | ||
\infty | 無限大 (中国語) | \infty | $\infty$ | 無限大
|
∞ | 無限大 (英語) | ∞ | $∞$ |
幾何学
タグまたは記号 | 関数 | 数式コンテンツの例 | 数式入力の例 | 発音 |
\pi | ディスパッチ | \pi=3.14159 | $\pi =3.14159$ | 円周率パイは 3.14159 |
\sin (sine | 三角関数 | \sin (sine30^\circ=1\frac2 | $\sin 30^\circ =\frac {1}{2}$ | 30 度のサインは 2 分の 1 |
\cos (cosine | $\cos 30^\circ =\frac {\sqrt {2}}{2}$ | 30 度のコサインは 2 分のルート 2 | ||
\tan (tangent | $\tan 30^\circ =\frac {\sin 30^\circ}{\cos 30^\circ}$ | 30 度のタンジェントは 30 度のコサイン分の 30 度のサイン | ||
\csc (cosecant | $\csc A$ | コセカント A | ||
\sec (secant | $\sec A$ | セカント A | ||
\cot (cotangent | $\cot A$ | コタンジェント A | ||
\angle | 角 | \angle AB | $\angle AB$ | 角 AB |
∠ | ∠AB | $∠AB$ | ||
^\circ | 度 | ∠AB = 30^\circ | $∠AB = 30^\circ$ | 角 AB は 30 度 |
\odot | 円 | \odot | $\odot$ | 円 |
\overset\frown | 弧 | \overset\frown {BC} | $\overset\frown {BC}$ | 弧 BC |
\rm{Rt} | 直角 | \because \rm{Rt}\triangle ABC | $\because \rm{Rt}\triangle ABC$ | 三角形 ABC は直角三角形であるため |
\mathrm{Rt} | \therefore AB \perp BC | $\therefore AB \perp BC$ | したがって、AB は BC に垂直です | |
\triangle | 三角形 | \triangleABC | $\triangle ABC$ | 三角形 ABC |
△ | △ABC | $△ABC$ | ||
\parallelogram | 平行四辺形 | \parallelogramABCD | $\parallelogram ABCD$ | 平行四辺形 ABCD |
\perp | 垂直 | AB \perp BC | $AB \perp BC$ | AB は BC に垂直 |
\bot | AB \bot BC | $AB \bot BC$ | ||
⊥ | AB ⊥ BC | $AB ⊥ BC$ | ||
\parallel | 平行 | A\parallel B | $A\parallel B$ | A は B に平行 |
\equalparallel | 平行かつ等しい | A\equalparallel B | $A\equalparallel B$ | A は B に平行かつ等しい |
\cong | 合同 | △ABC\cong△DEF | $△ABC\cong△DEF$ | 三角形 ABC は三角形 DEF と合同 |
条件
タグまたは記号 | 関数 | 数式コンテンツの例 | 数式入力の例 | 発音 |
\implies | 起動 | \implies 1+1=2 | $\implies 1+1=2$ | これは 1 プラス 1 が 2 に等しいことを意味します |
\iff | 同値 | p\iffq | $p\iffq$ | p は q と同値 |
\because | なぜなら | \because a = b \therefore b=a | $\because a = b \therefore b=a$ | なぜなら a は b に等しい、したがって b は a に等しい |
\therefore | したがって |
単位
単位は、\unit、\quantity、\mathit、\mathrm、または \rm タグで囲む必要があります。例: \unit{cm}。
タグまたは記号 | 発音 | 数式コンテンツの例 | 数式入力の例 | 発音の例 |
mm | ミリメートル | 5\quantity{mm} | $5\quantity{mm}$ | 5 ミリメートル |
cm | センチメートル | 5\quantity{cm} | $5\quantity{cm}$ | 5 センチメートル |
dm | デシメートル | 5\quantity{dm} | $5\quantity{dm}$ | 5 デシメートル |
m | メートル | 5\quantity{m} | $5\quantity{m}$ | 5 メートル |
km | キロメートル | 5\quantity{km} | $5\quantity{km}$ | 5 キロメートル |
g | グラム | 5\quantity{g} | $5\quantity{g}$ | 5 グラム |
kg | キログラム | 5\quantity{kg} | $5\quantity{kg}$ | 5 キログラム |
t | トン | 5\quantity{t} | $5\quantity{t}$ | 5 トン |
mm^2 | 平方ミリメートル | 5\quantity{mm^2} | $5\quantity{mm^2}$ | 5 平方ミリメートル |
cm^2 | 平方センチメートル | 5\quantity{cm^2} | $5\quantity{cm^2}$ | 5 平方センチメートル |
dm^2 | 平方デシメートル | 5\quantity{dm^2} | $5\quantity{dm^2}$ | 5 平方デシメートル |
m^2 | 平方メートル | 5\quantity{m^2} | $5\quantity{m^2}$ | 5 平方メートル |
km^2 | 平方キロメートル | 5\quantity{km^2} | $5\quantity{km^2}$ | 5 平方キロメートル |
mm^3 | 立方ミリメートル | 5\quantity{mm^3} | $5\quantity{mm^3}$ | 5 立方ミリメートル |
cm^3 | 立方センチメートル | 5\quantity{cm^3} | $5\quantity{cm^3}$ | 5 立方センチメートル |
dm^3 | 立方デシメートル | 5\quantity{dm^3} | $5\quantity{dm^3}$ | 5 立方デシメートル |
m^3 | 立方メートル | 5\quantity{m^3} | $5\quantity{m^3}$ | 5 立方メートル |
km^3 | 立方キロメートル | 5\quantity{km^3} | $5\quantity{km^3}$ | 5 立方キロメートル |
ml | ミリリットル | 5\quantity{ml} | $5\quantity{ml}$ | 5 ミリリットル |
s | 秒 | 5\quantity{s} | $5\quantity{s}$ | 5 秒 |
min | 分 | 5\quantity{min} | $5\quantity{min}$ | 5 分 |
h | 時間 | 5\quantity{h} | $5\quantity{h}$ | 5 時間 |
km/h | 時速キロメートル | 5\quantity{km/h} | $5\quantity{km/h}$ | 時速 5 キロメートル |
g/l | グラム毎リットル | 5\quantity{g/l} | $5\quantity{g/l}$ | 5 グラム毎リットル |
制限事項
言語の制限: 中国語のみがサポートされています。
コンテンツの制限:
数式では、サポートされているタグと記号に記載されているタグと記号のみを使用する必要があります。
```math ... ```などの Markdown 形式の数式はサポートされていません。区切り文字内には数式のみを含めてください。他のコンテンツが含まれていると、音声合成が不正確になる場合があります。
モデルの可用性:
cosyvoice-v2、cosyvoice-v3-flash、およびcosyvoice-v3-plusがサポートされています。
よくある質問
Q: 入力した数式が読み上げられないのはなぜですか?
次の項目を確認してください:
区切り文字の確認: 数式が
$...$、$$...$$、\(...\)、または\[...\]で正しく囲まれていることを確認します。数式の複雑さの確認: 数式にサポートされていないタグや記号が含まれていないことを確認してください。詳細については、「制限事項」および「サポートされているタグと記号」をご参照ください。
エスケープ文字の確認: API リクエストを送信する際、数式内のバックスラッシュ (
\) が\\として正しくエスケープされていることを確認します。
Q: コード内で \ (バックスラッシュ) を含む文字列を正しく処理するにはどうすればよいですか?
Python、Java、JavaScript などのほとんどのプログラミング言語では、バックスラッシュ (\) は文字列リテラルおよび JSON 形式のデータにおける特殊なエスケープ文字です。したがって、バックスラッシュ自体をエスケープする必要があります。単一の \ を表すには \\ を使用します。たとえば、コード内で \frac を \\frac と記述します。