の作業

録音した声を、1バイトも外に出さない作りにしました

解析はすべてブラウザの中で終わります。サーバーに音声を送っていません。なぜそこまでするかと、それで何を諦めたかの話です。

このツールは、録音した音声をサーバーに送りません。声の特徴を出すのも、似ている声を探すのも、全部ブラウザの中で終わります。

送らないと決めたのは、最初の日でした。

声は、消せない情報だから

パスワードは変えられます。メールアドレスも捨てられる。でも声は変えられません。

一度どこかに置かれた録音は、その人が生きているあいだずっとその人の声です。しかもいまは、数十秒の音声があれば喋っていない言葉を喋らせられる時代になりました。

「安全に保管します」と書いて集めることもできます。でも保管する以上、漏れる可能性はゼロにはならない。漏れないようにする一番確実な方法は、最初から受け取らないことでした。

だから預かりません。預からなければ、漏らしようがない。

何を諦めたか

送らないと決めると、いくつか諦めることになります。

声を判定する仕組み一式を、開いた人の端末に読み込んでもらう必要があります。スマートフォンの写真で数枚ぶんの重さです。こちらで預かって処理すれば要らない読み込みを、わざわざしてもらっている。

処理も端末の性能に左右されます。古いスマートフォンだと時間がかかる。こちらで処理するなら、全員に同じ速さで返せます。

それから、利用者の声を集めて精度を上げることが永久にできません。普通のサービスなら、集まった音声で判定を良くしていくところです。それを自分で塞いでいる。

集めない限り、このツールの精度は集めた声優28名分から動きません。それは承知のうえです。

約束は、書いただけでは守れない

画面には「録音した音声は端末の外に出ません」と書いてあります。

ただ、こういう文はいくらでも書けます。書いてあることと実際が合っているかは、読んだ人には確かめようがない。

なので、書いた通りになっているかを毎回機械で確かめる仕組みを置きました。実際に録音を解析させながら、外へ出ていく通信を全部見張ります。他社のドメインを踏んでいないこと、出ていく通信の中身に音声らしきものが混ざっていないことを、毎回確かめます。

最近ここを1度書き換えました。訪問数の計測を入れたので、「通信がゼロ」という条件がそのままでは使えなくなったからです。

守るべき約束は「音声が端末の外に出ない」であって「一切通信しない」ではありません。確かめ方を、出ていく先と出ていく中身の両方を見る形に直しました。

計測で送っているのは、操作の種類と鑑定の類型だけです。1回ぶんは短い一文より小さい量で、実際に中身を開いて音声が入っていないことを確かめています。

預からないと決めたこと

音声を預からないと決めたせいで、できなくなったことはいくつもあります。精度は上げにくいし、古い端末では待たせてしまう。

それでも、声だけは手元から出さない方がいいと思っています。「安全に保管します」と言うより、「そもそも受け取っていません」と言える方がいい。

この記事の測り方を、自分の声で試せます。

自分の声を測る

登録は要りません。録音は端末の外に出ず、解析はすべてブラウザ内で行われます。

改善のために、訪問数と操作の回数を数えています。Cookie は使いません。送っているのは操作の種類と鑑定の類型コードだけで、録音した音声は送っていません。