AI

AI

RustとWASMでゲームボーイエミュレータを作る — テスト全通過から「実機の音」になるまで

RustでゲームボーイエミュレータをフルスクラッチしWASMでブラウザ動作。Blarggテスト全通過、m-cycle精度化、そしてゲーム音楽が「キーキー」鳴る2つの原因(バッファ枯渇とエイリアシング)を計測で特定して完治させるまでの開発記。
AI

声は言葉より早い ── OpenAI gpt-audioの怒り判定が、テキスト判定より2発話先に警報を出すまで

コールセンターの通話から顧客の怒りをリアルタイム検知するシステムを作っている。文字起こしをLLMで判定するテキスト経路は既に動いていて、バックテストも通った。そこに声のトーン判定を足したら、狙っていなかった現象が出た。声は、言葉より早く怒る...
AI

OpenAI gpt-audio に「音声をお聞かせください」と言われる ── 直したのはJSONの指示を書く場所

通話音声から声のトーンを判定させようと、OpenAIの音声入力対応モデル(gpt-audio)を Chat Completions API から叩いていて、妙な壁にぶつかった。WAVをちゃんと添えているのに、モデルが「音声をお聞かせください...
AI

怒った通話をTTSで合成する — Amazon Connect/KVS互換のMKVを作り、架電せずに検証する

コールセンターの通話から相手の怒りを検知するシステムを作っている。判定はできた。だが検証で詰まった。怒った通話が要る。しかし自分で架けて「怒れ」と言われても怒れない。一人二役で電話に出て、自分で自分に怒鳴る。やってみると分かるが、これは驚く...
AI

create_allは黙って列を無視する — データが入った後からAlembicを導入する crossbar_telepath 開発記 (4)

SQLAlchemyのcreate_allは既存テーブルに列を足せず、エラーも出さずに黙って無視する。データが入った後からAlembicを導入する手順(alembic stampで基準線を引く)と、マイグレーションがもたらす「後から足せるので今足さなくていい」という設計の身軽さについて。
AI

知能は網に埋めるな — 電話網のIN設計がAIモデル群雄割拠の時代に蘇る

いま開発している通話心理分析AI crossbar_telepath の話をしていて、「分析エンジンをOpenAIとGeminiで差し替え可能にすると面白い」という提案を受けた。そのとき自分の口から出たのは「だからSCPなんだけどな」だった...
AI

freee会計への経費登録を半自動化した——明細PDF抽出の設計と、freee API自前アプリのハマりどころ

個人事業主の月次ルーチンに「経費の登録」がある。銀行明細を眺めて、税理士報酬や家賃を見つけて、freeeに手で入力する。件数は月に10件足らずだが、毎月確実に発生し、たまに漏れる。今回これをClaude Codeと組んで半自動化した。設計判...
AI

4回電話したのに履歴が2件しかない — Amazon Connect + KVSから消えた呼を救出する

実装の切り替わりで消えた2本の通話をKVSアーカイブから救出。SearchContactsでContactIdを復元し、フラグメントの空白で呼を分割。SQSの保持期間をKVSと揃えると、シグナリングがそのまま留守番電話になる。
AI

通話路を覗くな、シグナリングを引け — Amazon ConnectのLambda→SQSで通話呼を確実に特定する

前回、TerraformでコールセンターをIaC構築し、公衆電話網からKinesis Video Streams(KVS)まで通話音声を引っ張ってくるところまでやった。MKVコンテナのCodecIDがA_AACを詐称していて中身は生PCMだ...
AI

なぜ音楽アプリは要件が無限に膨らむのか — きらきら星がバッハ全曲になるまでの実録と、現代のスコープクリープの闇

「クリックでドレミが鳴るおもちゃ」が1日でミニ楽譜エディタに膨張した実録から、受託の「ついで」文化、アジャイル免罪符、そしてAIが実装コストという最後の防波堤を外した現代のスコープクリープを考える。