新しいものを表示

あと推論したあと、謎にほぼ同じ容量のmodel.safetensorsをダウンロードしてくることがあるんだけど、これ何だろうか。

スレッドを表示

なんで準備中なんだろ。権利関係の調整でもしてるんかな?

スレッドを表示

Parler-TTSのオリジナルのリポジトリをみてきたが、話者固定って、普通にプロンプトで話者名を指定する感じだった。つまり話者決め打ち学習もしてあるってことかな。イラストAIで言えば、artistタグでの学習をやってるというのと近い。じゃあこれはモデル製作者に、話者名を開示してもらわないと試せんな。

スレッドを表示

とりあえずサンプルだけ試した。
large版はまだちゃんと推論できないみたい。VRAMは10GBくらい消費してた。CPU推論も一応はできる。

mini版はいけた。GPUだと4GBくらい消費で高速。リアルタイムTTSもできるレベルかな。CPUでもなんとか実用速度で動く。精度はサンプル文の限りでは良好。

話者(というか発声パラメータだろうけど)固定ってどうやるんだろ。

スレッドを表示

x.com/getuka_0401_/status/1858
Parler-TTSは、特定話者の音声を再現することを目的とはしてないTTSモデルだという理解。大量の音声データを機械学習して作製した合成音声AIとしては、建前的にまっとうなアプローチだと思われる。ちょっと試してみようね。

Whisper large-v3、実はチャット用の音声認識としては、十分な性能とは言えない面もある。というのもあれは相槌とかの短文に弱い。コンテキストが不足するせいだろう。

だったら、ユーザーの発声の前のボット発声もコンテキストとして入力すれば、それは「会話文の書き起こし」になるので精度上がるのかもしれないな。まあ富豪的なのでやりたくはない。

とはいえ、キャラチャット程度ならそこそこ使えるのも確か。正確に認識されなくても、そのままLLMに入力しても、何となく会話は成立するのだ。

あまりに変な音声認識結果だと、キャラが「お前何わけわからんこと言ってるの?」と煽ってくるけど、それはそれで味だと思う。結構おもろいよ。言い間違えた、とか、お前の聞き間違いじゃボケ、とか、そういう風にそのやり取りも楽しめばいいんです。

あと、AIキャラチャットに、チャットチューニングを施したLLMは不適、というのも私の中で既に結論が出ている。

チャットモデルというのは、「人間とAIの会話」を学習したモデルなので、AIキャラチャットに用いると、「人間がAIに対して、キャラのように振る舞った回答を得る」行為になってしまう。だから回答内容は、いかにもChatGPT的な内容に、口調だけ再現したキャラになりがち。

だからAIキャラチャットは、小説文の台詞補完という形で実装するのが一番、精度が良い。

スレッドを表示

AIキャラチャットで一番大切なのは、応答速度ではない、という結論に至りつつある。チャットをターン制バトルじゃなくて、アクティブタイムバトルにするのが、たぶん一番大事だ。

チャットをターン制としてpull的、同期的に処理しようとするから、応答速度が気になってしまうんだろう。でも、会話って必ずしも「応答」するもんじゃないし、即座の「応答」があると会話っぽいかというと、そんなことも無い。応答速度を気にするあまり、フィラーを機械的に挿入して、いかにも機械との会話っぽくなってしまって本末転倒状態まである。

任意のタイミングで、こちらの話がそれなりの時間内に相手に伝わり、任意のタイミングで相手の話がこちらに伝われば、会話は成立するんだ。我々は普通にそれくらいの遅延があるボイスチャットを人間同士でもやってるわけで。

スレッドを表示

pushモードはまだ未完成で、話しかけてくるタイミングがランダムなのだけど、ここをもちっと人間ぽく調整すると良さそう。

音声入力が途絶えると、しばらくしてから話しかけるのをやめる。
そんで、しばらくしてまたこちらから話しかけるときには、前回からの経過時間を地の文として挿入し、会話再開。
また、数十分とかの間隔でランダムに話しかける。これも反応がなかったらすぐに黙る。

こんなんで十分かな。発話タイミングをAIで決定するのもいいけど、そこまでの必要はあんまり感じない。

スレッドを表示

会話ってpullだけじゃなくてpushもあるべきだよな。巷のAIチャット、pullばっかりだけど。

スレッドを表示

キャラチャット、ほっとくとずっと喋り続けるpushモードというのがあるんだけど、pushモード中に声で話しかけるとそれにもちゃんと応答する。これ普通に会話ぽさがあるな。おもろいw

スレッドを表示

やっぱキャラチャットでCoTすると微妙になるなあ。台詞がいかにも「考えたもの」になってボットじみたものになる。いやまあ考えさせるのだから当たり前だが。
会話なんて考えなしにする方が良いんだろう。

スレッドを表示

でもローカルLLMでkv cache使えば割と現実的な推論コストでやれるんよな、これくらいならね。

スレッドを表示

台詞の最初の1文補完→キャラのCoTによる後続台詞文生成x3→編集者プロンプトによる選択
みたいなのもアリだな。ここまでやるとさすがに2文目以降の出力遅延が気になるレベルになるか?

スレッドを表示

こういう「編集者プロンプト」で台詞選択をするのもいいが、いっそCoTでもいいかもなぁ。

台詞の最初の文は通常通り、台詞として、小説文の補完文として得る。それに続く台詞は小説の登場人物によるCoTを行う。
こうすることで、応答速度と思考による精度向上の両立が取れるのでは。

スレッドを表示

で、この手法の良いところは、最初の出力文は台詞として確定するので、出力したら即座に音声合成に送れる。そうやって合成した音声を再生している隙に、後続文の推論、選択、音声合成をやる、ということが可能になってくる。これで台詞の精度を上げつつ(上がればいいな)、応答速度も低下しない。

スレッドを表示

「そうですね。」のような、返答の最初の文はおかしくないことが多い。となると、最初の文は敢えて選択せず、出力をそのまま採用し、これに続く文を3つ出力して、それを選択させてみようかな。

選択プロンプトとしては、

ユーザーが「今日は良い天気ですね」と発言しました。これに対するAIの返答としてもっとも適したものは、どれですか?

①「そうですね。でも雨が降っていますよ。」
②「そうですね。過ごしやすい気温ですね。」
③「そうですね。良かったですね。」

のようになる。これだと変な台詞を検出しやすくなるのではないか?
台詞全体を3個出力するよりコストも安いしな。試す価値あり。

スレッドを表示

台詞で矛盾が起きやすいのって、台詞が複文になるときが多い印象。

つまり、
ユーザー「今日は良い天気ですね」
AI「そうですね。でも雨が降っていますよ。」

こういうの。しかし、この文章のおかしさを、この台詞を出力させたモデル自身に判定させるのは厳しい。

スレッドを表示

キャラチャットで同じプロンプトで3つ台詞だして、良いのをfunction calling的に選択させるプロンプト、効果が多少あるかな程度で、応答速度を犠牲にするまでのものかは疑問。結局は評価も同じモデルでやるから、うまく最良の選択ができてない感じ。論理エラーの検出が一番したいことなのに、それが一番苦手な感じ。ちょっと戦略を立てよう。

ルーラのMP消費が0で話題になってるけど、昨今のリメイクだとだいたい消費1だったし、そんな大胆なアレンジでもないのではないか?というかドラクエ6から消費1だしな。

ドラクエ、瞬間移動コストはゼロに近くしておくから、その分世界中を飛び回っていっぱい探索してね、という思想があるんだと思う。

古いものを表示
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。