**Sopro TTS:**  
CPU 上で動作し、ゼロショット音声クローン機能を備えた 1,690 万パラメータのモデル。

2026/01/09 5:37

**Sopro TTS:** CPU 上で動作し、ゼロショット音声クローン機能を備えた 1,690 万パラメータのモデル。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

## Summary
Soproは、1億6900万パラメータで構築された軽量な英語テキスト・トゥー・スピーチシステムです。リアルタイムのストリーミング合成と、わずか数秒の参照音声からのゼロショットボイスクラーニングを提供します。そのアーキテクチャは重いTransformerをドリーテッドWaveNetスタイルの畳み込みと軽量なクロスアテンション層に置き換え、M3コアマシンでCPUリアルタイム係数0.25(約7.5秒で30秒分の音声生成)を達成します。モデルは依存関係が最小限で、PyTorch 2.6.0のみを必要とし、低スペックハードウェアでも効率的に動作します。

Soproは単純なPython API(`SoproTTS.synthesize`)、コマンドラインインターフェイス(`soprotts …`)、およびUvicornまたはDockerで起動できる対話型Webデモを通じて、非ストリーミング(`SoproTTS.synthesize`)とストリーミング(`SoproTTS.stream`)の両方のモードをサポートします。ストリーミング出力は非ストリーミングモードとビットレベルで完全に一致しないため、最高品質を求めるユーザーは非ストリーミング合成を使用することが推奨されます。

トレーニングにはEmilia YODAS、LibriTTS‑R、Mozilla Common Voice 22、およびMLSなどの公開コーパスからデータが採用され、WaveNet、Attentive Stats Pooling、AudioLM、CSMといった確立された手法を組み込んでいます。ボイスクラーニングの品質はマイクロフォンの品質に依存し、システムは略語よりも音素レベルの参照音声を好みます。

Soproは低リソースフットプリント、CPUフレンドリー、そして簡単な統合性を備えているため、チャットボット、アクセシビリティツール、組み込みデバイス、および軽量TTSと高品質ボイスクラーニングが必要なリアルタイムアプリケーションに最適です。

本文

Sopro TTS – README(日本語訳)

概要

Sopro(ポルトガル語で「息/吹き込み」を意味)は、サイドプロジェクトとして作成した軽量な英語テキスト‑to‑speechモデルです。

  • WaveNet のようにダイレーテッド畳み込みを使用し、Transformer ではなく軽量クロスアテンションで実装しています。
  • すべての声で最先端というわけではありませんが、非常に低コスト(L40S GPU1台)で構築しました。
  • データを改善することでさらに向上させることが可能です。

主な特徴

  • パラメータ数:169 M
  • ストリーミング合成
  • ゼロショット音声クローン化
  • CPU で約0.25 RTF(例:M3 ベースモデルで30 s の音声を7.5 s で生成)
  • 音声クローン化には3–12 s の参照音声が必要

インストール

最小依存関係

# 任意:クリーンな Conda 環境を作成
conda create -n soprotts python=3.10
conda activate soprotts

# PyPI からインストール
pip install sopro

# またはリポジトリから
git clone https://github.com/samuel-vitorino/sopro
cd sopro
pip install -e .

ヒント
M3 CPU 上では

torch==2.6.0
torchvision
を除く)で約 3 倍のパフォーマンスが得られます。

利用方法

コマンドラインインターフェース (CLI)

soprotts \
  --text "Sopro is a lightweight 169 million parameter text-to-speech model. Some of the main features are streaming, zero-shot voice cloning, and 0.25 real-time factor on the CPU." \
  --ref_audio ref.wav \
  --out out.wav

追加オプション:

  • --style_strength
    – FiLM の強度を制御(デフォルト 1.0)。
  • --no_stop_head
    – 早期停止を無効化。
  • --stop_threshold
    ,
    --stop_patience
    – 最終フレームと判定される連続数。

Python API

非ストリーミング

from sopro import SoproTTS

tts = SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu")

wav = tts.synthesize(
    "Hello! This is a non-streaming Sopro TTS example.",
    ref_audio_path="ref.wav",
)

tts.save_wav("out.wav", wav)

ストリーミング

import torch
from sopro import SoproTTS

tts = SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu")

chunks = []
for chunk in tts.stream(
    "Hello! This is a streaming Sopro TTS example.",
    ref_audio_path="ref.mp3",
):
    chunks.append(chunk.cpu())

wav = torch.cat(chunks, dim=-1)
tts.save_wav("out_stream.wav", wav)

インタラクティブストリーミングデモ

pip install -r demo/requirements.txt
uvicorn demo.server:app --host 0.0.0.0 --port 8000
# または Docker
docker build -t sopro-demo .
docker run --rm -p 8000:8000 sopro-demo

ブラウザで http://localhost:8000 を開きます。

注意事項・ヒント

  • 一貫性 – パラメータを微調整して良いサンプルを得るまで試行錯誤してください。
  • 音声クローン化 はマイクの品質と周囲ノイズに大きく左右されます。分布外の声では失敗する可能性があります。
  • 略語や記号よりも音素表記を好む(例:
    1 + 2
    1 plus 2
    )。ただし Sopro は多くの略語(
    CPU
    ,
    TTS
    等)に対応しています。
  • ストリーミング版は非ストリーミングとビット単位で完全一致しないため、最高品質を求めるなら非ストリーミングを推奨します。
  • torchaudio
    を使う場合は ffmpeg が必要になることがあります。
    soundfile
    の使用が推奨です。
  • 生成は約32 s(400フレーム)までに制限されます。それ以上だとモデルが幻覚を起こしやすくなります。

今後の計画

  • コードが整理できたらトレーニングコードを公開予定。
  • 原音をトレーニング時に使用して話者埋め込み/声類似性を向上。
  • 生成速度向上のため Conv の状態キャッシュ化。
  • 言語サポートと総合品質の拡充。

トレーニングデータ

  • Emilia YODAS
  • LibriTTS‑R
  • Mozilla Common Voice 22
  • MLS

謝辞

  • Mimi Codec (Kyutai)
  • WaveNet
  • Attentive Stats Pooling
  • AudioLM
  • CSM

このプロジェクトがお役に立ったら、コーヒーを購入していただけると嬉しいです: https://buymeacoffee.com/samuelvitorino

同じ日のほかのニュース

一覧に戻る →

2026/01/09 4:54

**200 行以内で書く Claude スタイルプログラムの作り方** 1. **目標を定義する** * プログラムが解決すべき問題(例:テキスト生成、データ分析など)を決める。 * 必要な入力・出力、および制約事項を概略化する。 2. **適切な言語とライブラリを選ぶ** * 迅速なプロトタイピングには Python を推奨。 * `openai` や `anthropic` SDK を使用し、必要最低限のモジュール(例:`json`、`time`)のみインポートする。 3. **コード構成** ```python # 1️⃣ インポート import os, json, time from anthropic import Anthropic # 2️⃣ 設定 api_key = os.getenv("ANTHROPIC_API_KEY") client = Anthropic(api_key=api_key) # 3️⃣ コア関数 def generate_text(prompt: str, max_tokens: int = 200) -> str: response = client.completions.create( model="claude-2.1", prompt=prompt, max_tokens_to_sample=max_tokens, temperature=0.7, ) return response.completion # 4️⃣ ユーティリティ関数 def save_output(text: str, path: str) -> None: with open(path, "w", encoding="utf-8") as f: f.write(text) # 5️⃣ メインフロー if __name__ == "__main__": prompt = input("Enter your prompt: ") result = generate_text(prompt) print("\nGenerated Text:\n", result) save_output(result, "output.txt") ``` 4. **200 行以内に収める** * 不要なコメントや冗長なログを避ける。 * 繰り返しコードの代わりに簡潔なヘルパー関数を使う。 5. **テストと検証** * `generate_text` と `save_output` 用に単純なユニットテストを書く。 * 複数サンプルプロンプトでスクリプトが安定して動作するか確認する。 6. **パッケージング(任意)** * `requirements.txt` を追加: ``` anthropic==0.3.2 python-dotenv==1.0.0 ``` * セットアップと使い方を簡潔に説明した README を用意する。 7. **最終チェックリスト** * 未使用のインポートや変数がないこと。 * 文字列はすべて `utf-8` でエンコードされていること。 * 新しい環境でもエラーなく実行できること。 このテンプレートに沿えば、200 行以内でクリーンかつ機能的な Claude スタイルプログラムが完成します。実験・拡張・デプロイの準備は万端です。

## Japanese Translation: (to address missing elements while keeping clarity):** > 本記事では、JSON形式のツール呼び出し(`read_file`、`list_files`、`edit_file`)を介してLLMと対話し、ディスク上のファイルを操作する軽量なコーディングエージェントの構築方法を示します。 > エージェントのコアループは、ユーザーからの自然言語リクエストをLLMに送信し、そのJSONレスポンスからツール呼び出しを解析して対応するローカル関数を実行し、結果を会話へフィードバックします。ツールが要求されなくなるまでこのプロセスを繰り返します。各ツールは構造化された辞書を返します(`read_file` → `{file_path, content}`、`list_files` → `{path, entries}`、`edit_file` → テキストの作成または置換)。 > システムプロンプトは自動的に生成され、各ツールの名前・説明(docstringから取得)とシグネチャを列挙することでLLMが正しく呼び出せるようにします。例ではAnthropic API経由でClaude Sonnet 4を使用していますが、クライアント初期化部分を書き換えるだけで任意のLLMプロバイダーへ切り替え可能です。 > 実装はインポート、環境変数読み込み(`dotenv`)、ターミナルカラー補助関数、および`resolve_abs_path`ヘルパーを含めて約200行のPythonコードです。プロダクション向けエージェント(例:Claude Code)は、このパターンにgrep、bash、websearchなど追加ツールや高度なエラーハンドリング、ストリーミングレスポンス、要約機能、および破壊的操作の承認ワークフローを組み込んでいます。 > 読者は新しいツールを追加したりLLMプロバイダーを切替えたりして、最小限のボイラープレートで高度なコーディング支援が実現できることを体験できます。 この改訂された概要は主要なポイントをすべて網羅し、未支持の推測を避けつつメインメッセージを明確に保ち、あいまい表現を削除しています。

2026/01/09 0:07

ボーズは古いスマートスピーカーをブリック化せず、オープンソースとして公開しています。

## Japanese Translation: **修正版要約** ボーズは、サウンドタッチスマートスピーカーのAPIドキュメントをオープンソース化することを発表し、公式クラウドサポートを2026年5月6日まで延長しました。これは元々計画されていた期間より約6か月長いものです。また、新しいサウンドタッチアプリの更新ではローカル制御が追加されるため、ユーザーはクラウドサービス終了後も機能を維持できます。Bluetooth、AirPlay、Spotify Connect、および物理的なAUX接続を通じて音楽ストリーミングを継続でき、グループ化、初期設定、構成などのリモートコントロール機能も動作します。APIをオープンソースにすることで、ボーズはクラウドサービス停止によって残されたギャップを埋めるカスタムツールを開発者が構築できるようにしています。この動きは、公式シャットダウン後にデバイス機能を維持したPebbleのRebble Allianceなど、コミュニティ主導の取り組みと共鳴します。

2026/01/09 4:00

**フーリエ変換の驚くべき有効性**

## Japanese Translation: > Joshua Wise の **Teardown 2025** 講演(OFDM、FFT、および DVB‑T に関するもの)は、彼の YouTube チャンネルで録画として無料で視聴でき、イベントページから直接ストリーミングすることも可能です。 > スピーカーはプレゼンテーションスライドの PDF を提供し、講演中にプロットを生成した Jupyter ノートブックを共有しています;コードは「実用化準備ができている」ではなく、あくまで「例示的」であるとラベル付けされています。 > Wise は期限切れの **US 3488445A** OFDM 特許(1966 年提出、1987 年失効)を参照し、Eugene Wigner の論文 *“The Unreasonable Effectiveness of Mathematics in the Natural Sciences”* とその他関連する研究を引用しています。 > さらに、同乗キャリアと時間オフセットの同時推定に関する研究論文を提示し、そのアルゴリズムを手動で実装して議論を呼びかけています。 > Wise が構築した DVB‑T デコーダーのサンプルはデモンストレーションとして共有されていますが、最適であると主張していません。 > より深い理解のために、FFT(高速フーリエ変換)を説明する高く評価されたビデオを見ることを推奨しています。 > 興味のある視聴者は **joshua@joshuawise.com** か彼のウェブサイト https://joshuawise.com、業務用メール **joshua@accelerated.tech**(サイト https://accelerated.tech)、または Fediverse 上で **@joshua@social.emarhavil.com** に連絡できます。 > これらのリソースは、エンジニア・研究者・学生に対し実用的なコード、理論的参照、および OFDM/DVB‑T デコーディングをさらに探求するためのディスカッションプラットフォームを提供します。