メインコンテンツへスキップ

Kokoro-82Mで日本語音声を生成する

軽量なテキスト読み上げ(TTS)モデルKokoro-82Mを試してみる。

インストール
#

$ pip install -q kokoro soundfile misaki[ja]

生成に使用したスクリプト
#

from kokoro import KPipeline
import soundfile as sf
pipeline = KPipeline(lang_code='j')

text = '''
 私は、その男の写真を三葉、見たことがある。  
 一葉は、その男の、幼年時代、とでも言うべきであろうか、十歳前後かと推定される頃の写真であって、その子供が大勢の女のひとに取りかこまれ、(それは、その子供の姉たち、妹たち、それから、従姉妹たちかと想像される)庭園の池のほとりに、荒い縞の袴をはいて立ち、首を三十度ほど左に傾け、醜く笑っている写真である。醜く? けれども、鈍い人たち(つまり、美醜などに関心を持たぬ人たち)は、面白くも何とも無いような顔をして、  
「可愛い坊ちゃんですね」  
 といい加減なお世辞を言っても、まんざら空お世辞に聞えないくらいの、謂わば通俗の「可愛らしさ」みたいな影もその子供の笑顔に無いわけではないのだが、しかし、いささかでも、美醜に就いての訓練を経て来たひとなら、ひとめ見てすぐ、  
「なんて、いやな子供だ」  
 と頗る不快そうに呟き、毛虫でも払いのける時のような手つきで、その写真をほうり投げるかも知れない。
'''
generator = pipeline(
    text, voice='jf_alpha', 
    speed=1, split_pattern=r'\n+'
)
for i, (gs, ps, audio) in enumerate(generator):
    print(i)  # i => index
    print(gs) # gs => graphemes/text
    print(ps) # ps => phonemes
    sf.write(f'{i}.wav', audio, 24000)

実行
#

$ time python kokoro-sample.py
(中略)
python kokoro-sample.py  139.01s user 61.26s system 945% cpu 21.171 total

Mac mini(M4 Pro)の実行速度。マルチスレッドで実行されている。

生成された音声
#

上記のスクリプトでは改行単位でwavファイルが生成されるが、ffpmpegで結合しmp3に変換した。

ffmpeg -i 0.wav -i 1.wav -i 2.wav -i 3.wav -i 4.wav -i 5.wav \\n-filter_complex "[0:0][1:0][2:0][3:0][4:0][5:0]concat=n=6:v=0:a=1[out]" \\n-map "[out]" -acodec libmp3lame -q:a 2 kokoro.mp3

kokoro.mp3

ボイスはjf_alphaを使用した。現時点(2025/02/08)では日本語で5種類の音声を使用できる模様。

音声合成で商用のvoicepeakを使っているが、それと比較するとイントネーションの自然さでは負けているものの十分聞き取れる。

また、voicepeakはアプリのUIからテキストを入力し音声合成するしかなく、他のアプリやプログラムとの連携ができないが、Kokoro-82Mはプログラミング可能であるのが大きい。

ちなみに以下は同じテキストをvoicepeakの女性1で生成した音声。

voicepeak.mp3

関連記事

Mac mini(M4 Pro)

2024/11/11購入 M4 Pro (14コアCPU/20コアGPU) 64GBユニファイドメモリ 512GB SSDストレージ Thunderbolt 5ポート x 3、HDMIポート、USB-Cポート x 2、ヘッドフォンジャック

FLUX.1 [dev]をComfyUIで試してみる

Stable Diffusionの共同開発者たちによって設立されたベンチャー企業Black Forest Labsが発表した画像生成AIモデルであるFLUX.1をComfyUIから使えるようにローカル環境へインストールする。 インストール # FLUX.1 \[dev\]のインストール # 基本的にComfyUIでFlux AIを使う方法:詳細ガイドを参考にしてインストールしたが、現時点(2024/8/1 2)でいくつかの相違点があった。 flux1-dev.sftがflux1-dev.safetensorsにファイル名変更されている VAEはae.safetensors · black-forest-labs/FLUX.1-schnell at mainからダウンロードする それ以外は問題なくインストールできた。 FLUX.1 \[schnel\]のインストール # 最軽量のモデルFLUX.1 \[schnel\]もインストールする。 black-forest-labs/FLUX.1-schnell at mainからflux1-schnell.safetensorsをダウンロードしComfyUI/models/unetへ置く。 (オプション)FP8 CLIP用のチェックポイント # flux1-schnell-fp8.safetensors · Comfy-Org/flux1-schnell at mainからflux1-dev-fp8.safetensorsをダウンロードしComfyUI/models/checkpoints/へ置く flux1-schnell-fp8.safetensors · Comfy-Org/flux1-schnell at mainからflux1-schnell-fp8.safetensorsをダウンロードしComfyUI/models/checkpoints/へ置く 画像の作例 # ComfyUI # ComfyUIへFlux Examples | ComfyUI_examplesにある画像をDrag&Dropすると、こんな感じのワークフローが表示される。

2024年に買ってよかったもの

今年買って良かったものベスト9(中途半端)をまとめておく。 Mac mini 2024 # Mac mini 2024 M1 ProのMacbook Proに変わるメインマシンとして以下のスペックで購入した。 4コアCPU、20コアGPU、16コアNeural Engine搭載Apple M4 Proチップ 64GBユニファイドメモリ 512GB SSDストレージ 電源スイッチが底面にあるという、きっとジョブズが存命なら許されないであろうインタフェースデザインは残念だが、フットプリントが小さくとりまわしが楽だし、パフォーマンス面でも不満はまったく無い。長く使えそうだ。 Anker 675 USB-C ドッキングステーション] # Anker 675 USB-C ドッキングステーション

URLスキームに対応していないアプリを限定的に対応させる

Kofax Power PDF for MacというURLスキームに対応していないアプリを対応させるためのメモ。このアプリ限定の手順ではないので他のアプリへも応用可能だと思います。 プロトコルハンドラ用のアプリケーション作成 # AppleScriptを使ってKofax Power PDF for MacでPDFファイルを開くスクリプトを作成する。スクリプトエディタで以下のスクリプトを入力。 on open location theURL set pdfPath to do shell script "echo " & quoted form of theURL & " | sed 's/kofaxpdf:\\/\\/open\\?file=//g'" if (do shell script "test -f " & quoted form of pdfPath & " && echo true || echo false") is "true" then do shell script "open -a 'Kofax Power PDF for Mac'.app " & quoted form of pdfPath else display dialog "ファイルが見つかりません: " & pdfPath buttons {"OK"} default button "OK" end if end open location このスクリプトはkofaxpdf://open?file=/path/to/file.pdfで呼び出さると、ファイルパスを抽出しそのファイルを指定してKofax Power PDF for Macを起動するもの。スクリプトを保存し、ファイルメニューの書き出すでアプリケーションとして書き出す。 このアプリケーションがカスタムプロトコルを処理することになる。 Info.plistの編集 # Finderで上記で作成したアプリケーションを右クリックしパッケージの内容を表示を選択する Content/Info.plistを開き以下の内容を追加する <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>MyApp Protocol</string> <key>CFBundleURLSchemes</key> <array> <string>kofaxpdf</string> </array> </dict> </array> これによりkofaxpdf://というカスタムプロトコルがこのアプリケーションに関連付けられる。ここでいちどこのアプリケーションを起動しておく。

Kensington SlimBlade Pro

Kensington SlimBlade Proは、プロフェッショナルユーザーのために設計された高性能トラックボールです。優れた操作性、柔軟な接続オプション、そして長時間の使用でも快適な人間工学的デザインを兼ね備えています。 Kensington ケンジントン Slimblade Pro ワイヤレストラックボール 4ボタン 左右対称デザイン 55㎜ボール 有線接続 2.4GHzワイヤレス接続 Bluetooth接続 Mac対応 K72081JP 主な特長: # トリプル接続機能: Bluetooth 2.4GHzワイヤレス 有線USB接続 柔軟性を最大化し、様々な使用環境に対応します。 充電式バッテリー: USB-C接続で充電可能。フル充電で最大4ヶ月の使用が可能です。 革新的なスクロール機能: 55mmの大型トラックボールを回転させることで、ウェブページやドキュメントを素早く正確にスクロールできます。 人間工学に基づいたデザイン: 高さを抑えた設計 右利き・左利き両対応 コンパクトで場所を取らない 長時間の使用でも快適な操作が可能です。 高精度オプティカルトラッキング: デュアルセンサーによる正確なトラッキングで、少ない手や手首の動きで精密な操作が可能です。 カスタマイズ可能な操作: 8種類のプログラム可能なボタン(4つの物理ボタンと4セットのコンボボタン) KensingtonWorks™ ソフトウェアで簡単にカスタマイズ可能 セキュリティ機能: 128ビットAES暗号化により、ワイヤレス接続での情報セキュリティを確保 クロスプラットフォーム互換性: Windows 7以降(32ビット/64ビット)、Windows 11(64ビットのみ) macOS 10.13以降 DPI切り替え: DPIボタンで400DPI→800DPI→1200DPI→1600DPIを切り替え可能 89096670-739c-415a-b285-1d0f62629036.pdf

Obsidianの検索機能

Obsidianの標準の検索機能に関するメモ。検索 - Obsidian 日本語ヘルプ - Obsidian Publishより良く使うものを抜粋した。 ショートカットキー # Ctrl+Shift+Fまたは⌘+⇧+F 検索結果表示のオプション # 検索窓の右にあるボタンを押すと検索結果表示のオプションを設定できる。検索結果が多い場合などは、折りたたんでノート名であたりをつけたりするのに便利。 検索結果の埋め込み # ```query embed OR search ``` などとするとノート内に検索結果を埋め込むことができる。この機能はObsidian PublishでもQuartzでもサポートされていない。 検索クエリ # 検索条件 書きかた 説明 AND検索 foo bar fooとbarが含まれる OR検索 foo OR bar fooまたはbarが含まれる NOT検索 foo -bar fooを含むがbarを含まない foo スペースを含む文字列の検索 “foo bar” foo barという文字列を探す 特殊記号のエスケープ \" \\に続けて書くと通常の文字して検索 グループ化 ((a OR b) (c OR d)) 検索条件のグループ化 正規表現 /f../ //の中に正規表現を書く ファイル名検索 file:".jpg" ファイル名に.jpgを含むファイルを検索 ファイルパス検索 path:“journal/” ファイルパスにjournalを含むファイルを検索 タグ検索 tag:#mac タグに#macを含むノートを検索 大文字小文字を無視 ignore-case:(ABC) 大文字小文字を区別せずにABCを検索 大文字小文字を区別 match-case:(ABC) 大文字小文字を区別してABCを検索 ユースケース # 特定のディレクトリ配下を除外して検索 # 検索結果にノイズが含まれてしまうため、作業ログを置いているjournalというディレクトリは除外して検索したい。