概要
本日は、Blenderのロープシミュレーションスクリプト開発、Mac用バッテリーチェッカーアプリのログ分析と推定ロジック改善、そしてYouTubeキャプションから文字レベル同期歌詞データを生成するCLIツールとそのWebアプリケーション開発に集中的に取り組みました。特にWebアプリケーションでは、YouTubeプレイヤーとの同期表示や歌詞のスクロール位置調整に多くの時間を費やし、最終的にカラオケスタイルの表示を実現しました。
作業内容
Area2 (Blender Rope Script)
- 選択オブジェクトのバウンディングボックスからランダムな位置にロープ(エッジメッシュ)を生成するスクリプトを開発した。
- ロープにClothシミュレーションとSkinモディファイアを自動適用し、ピン留め用の頂点グループも自動作成するようにした。
- 複数ロープを1つのメッシュにまとめる機能や、各ロープにランダムなテンションを設定する機能を追加した。
- エッジメッシュでのコリジョン問題に対応するため、Soft Bodyシミュレーションへ切り替え、パラメータ調整を行った。
magic-batt-checker
- アプリのバッテリーログを分析し、デバイスのバッテリー消費傾向と残り使用時間を予測した。
- バッテリー残り時間の予測ロジックが直近のデータに偏っていたため、全履歴データを使用するように改善した。
- バージョンを1.1にバンプし、アプリケーションのDMGビルドとGitHubリリースを行った。
charsync (CLIツール)
- YouTube動画から文字レベル同期歌詞データを生成するCLIツールを開発した。
- AudioShake APIを利用してボーカル分離、歌詞転写、Word-levelタイムスタンプ取得を統合した。
- APIキーの管理(.envファイル)と、API呼び出し結果のローカルキャッシュ機能を追加した。
- ダウンロードした音声ファイル、生成されたJSON/LRCファイル、処理ログを出力ディレクトリに保存するようにした。
charsync (Webアプリケーション)
- YouTube動画と同期してカラオケスタイルで歌詞を表示するWebアプリケーションを開発した。
- 歌詞のスクロール位置がずれる問題を、
getBoundingClientRect()ベースの計算で正確に調整した。 - ページ読み込み時の自動スクロールを抑制し、現在の行が可視範囲外の場合のみスクロールするように改善した。
- 歌詞のスペース部分のハイライト表示が高さに影響を与え、レイアウトが動く問題を修正した。
Generated by ccdiary