CTC Forced Alignment on Apple Silicon using MLX.
PyTorch不要で、wav2vec2を使った文字・単語レベルのタイムスタンプ生成を行います。
pip install mlx-forced-aligner
from mlx_forced_aligner import ForcedAligner
aligner = ForcedAligner() # デフォルト: 日本語モデル (Coidemo/wav2vec2-japanese-mlx)
result = aligner.align("audio.wav", "こんにちは世界")
for word in result.words:
print(f"{word.word}: {word.start_time:.3f} - {word.end_time:.3f}")
segments = [
{"start": 0.0, "end": 5.0, "text": "こんにちは"},
{"start": 5.0, "end": 10.0, "text": "世界"},
]
result = aligner.align("audio.wav", "", segments=segments)
# テキストをアライメント
mlx-align align audio.wav "こんにちは世界"
# セグメントファイルを使用
mlx-align align audio.wav --segments segments.json
# HuggingFaceモデルをMLX形式に変換
mlx-align convert --model jonatasgrosman/wav2vec2-large-xlsr-53-japanese
MIT
6 commits
Python
100.0%
CTC Forced Alignment on Apple Silicon using MLX.
PyTorch不要で、wav2vec2を使った文字・単語レベルのタイムスタンプ生成を行います。
pip install mlx-forced-aligner
from mlx_forced_aligner import ForcedAligner
aligner = ForcedAligner() # デフォルト: 日本語モデル (Coidemo/wav2vec2-japanese-mlx)
result = aligner.align("audio.wav", "こんにちは世界")
for word in result.words:
print(f"{word.word}: {word.start_time:.3f} - {word.end_time:.3f}")
segments = [
{"start": 0.0, "end": 5.0, "text": "こんにちは"},
{"start": 5.0, "end": 10.0, "text": "世界"},
]
result = aligner.align("audio.wav", "", segments=segments)
# テキストをアライメント
mlx-align align audio.wav "こんにちは世界"
# セグメントファイルを使用
mlx-align align audio.wav --segments segments.json
# HuggingFaceモデルをMLX形式に変換
mlx-align convert --model jonatasgrosman/wav2vec2-large-xlsr-53-japanese
MIT
6 commits
Python
100.0%