diff --git a/content/blog/2024-09-01-voice.md b/content/blog/2024-09-01-voice.md new file mode 100644 index 0000000..7d3850a --- /dev/null +++ b/content/blog/2024-09-01-voice.md @@ -0,0 +1,145 @@ ++++ +date = "2024-09-01" +tags = ["mac","ue", "obs"] +title = "obs+discord+beatriceを使う" ++++ + +obsは配信のためのアプリですが、windowsで使えるマイクがないので、iphoneかmacを使って音声変換してdiscrodから取ってみた。このやり方がすごく良かった。あと後述する[ちやは神社](https://chihaya369.booth.pm/)が配布しているrvc modelがすごかった。 + +- https://github.com/w-okada/voice-changer +- https://huggingface.co/wok000/vcclient000/tree/main + +```sh +./start_http.command +``` + +- https://booth.pm/ja/items/4701666 + +まずマイクに近づかないと音を取れないのがきつい。なので離れていても音を取るのがいい。最初はiphone(discrod)からwindownsに繋いだらかなり離れててもしっかりと音を取れてよかった。 + +ただ、音声変換があまりうまくいかなくて、VST Pluginだったかを使うのは厳しいと感じた。なので、方向を変えてmac(discrod)から接続することにした。 + +macのgaragebandによる音声変換も使えるけど、beatriceがいいらしいのでw-okada/voice-changerから使うことにした。 + +## webcam motion capture + +- https://webcammotioncapture.info/ja/ + +まずvrm4u(vmc)ではwebcam motion captureが動きません。ue5.4.4のvrm4u(202408)の環境ですが動かない。しかし、一旦、vseefaceなどを挟むと使用できます。ただし、`webcam motion capture`と`w-okada/voice-changer`を同時に使用するとアプリが落ちます。時間経過でwebcamのcaptureが動かなくなります。 + +## discrodを使う理由 + +discordからでないと音量が大きくなりません。小さい声でもちゃんと拾って変換してくれるやり方として、discrodを使うとうまくいきました。ただし、高価なマイクがある場合はそちらの方が良いでしょう。 + +## 配信環境 + +[mac] +1. VB-Cableで仮想オーディオデバイス(output)を起動 +2. discordのinputに指定 +3. w-okada/voice-changerを起動してoutputにいれる + +[windows] + +4. discrodでボイスチャットに入る(別アカウント)、ここで音声が聴こえるはず +5. obsでdiscrodの音声キャプチャ +6. webcam motion capture -> vseefaceでカメラからvrmを動かせるようにする +7. ue5を起動して、obsでウィンドウキャプチャ。youtubeアカウントに接続し、配信管理から予約、開始する。開始したあとは準備できるまで音声キャプチャをミュート。ゲームを調整できれば開始してミュートを切る + +配信中にやること。操作がちょっと大変です。カメラ操作や移動操作など。 + +また、英語音声に変換しながら配信する予定。自動音声変換は精度が悪かったので文字列にしました。文字を打ち込むかあらかじめ用意しておいた文字を変換します。これをmacで流すとdiscrodを通じてかなりはっきり英語を喋ってくれます。たまってきたら音声ファイルをpecoとかfzfで検索できるようにしておくと良さそう。 + +```sh:voice.zsh +#!/bin/zsh + +d=${0:a:h} +f=$d/voice.json +vdir=$d/voice_dir +cfg=~/.config/ai/voice.json + +if [ ! -d $vdir ];then + mkdir -p $vdir +fi + +if [ -z "$1" ];then + ep=`cat $f|jq length` + ep=$((ep - 1)) +else + ep=$1 +fi + +j=`cat $f|jq ".[$ep].body"` +n=`echo $j|jq length` +n=$((n - 1)) + +fnction voice_chat() { + #echo chat : https://openai.com + #echo voice : https://elevenlabs.io + + vfile=$vdir/${ep}_${i}.mp3 + if [ -f $vfile ];then + mpv $vfile + echo voice ok + read + continue + fi + + echo "[$i]" + t=`echo $j|jq -r ".[$i].text"` + echo $t + echo --- + read chat_text + if [ -z "$chat_text" ] && [ -n "$t" ];then + chat_text=$t + fi + echo $chat_text + echo --- + + chat_api=`cat $cfg|jq -r .chat_api` + voice_text=`curl -sL https://api.openai.com/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer $chat_api" -d "{ \"model\": \"gpt-4o-mini\", \"messages\": [{\"role\": \"user\", \"content\": \"次の文章を英語に訳して\n\n$chat_text\"}], \"temperature\": 0.7 }"|jq ".choices.[].message.content"` + + echo $voice_text + # like-model + voice_id=zrHiDhphv9ZnVXBqCLjz + # alice-model + voice_id=Xb7hH8MSUJpSbSDYk0k2 + voice_api=`cat $cfg|jq -r .voice_api` + curl -sL --request POST \ + --url https://api.elevenlabs.io/v1/text-to-speech/$voice_id \ + --header "xi-api-key: $voice_api" \ + --header 'Content-Type: application/json' \ + --data "{ + \"text\": $voice_text, + \"model_id\": \"eleven_multilingual_v2\", + \"voice_settings\": { + \"stability\": 0.5, + \"similarity_boost\": 0.5 + } + }" --output $vfile && mpv $vfile +} + +for ((i=0;i<=$n;i++)) +do + voice_chat +done +``` + +```sh:voice.json +[ + { + "id":1, + "body" :[ + { "text":"こんにちは、みんな"}, + { "text":"配信を見てくれてありがとう。またね。"} + ] + } +] +``` + +### なぜue5(editor)で起動するのか? + +editorは相当重いので本来はbuildしたpackageで実行する方が良いです。しかし、buildするとvrm4u(vmc)の表情が動かなくなります。またstandaloneはもっと重くなりますので選択しません。PIEでwindowを作りません。windowを作ると新しい問題が発生しますし、動作も重くなります。 + +## rvc model + +boothでいくつかrvc modelを販売しているけどおすすめしません。freeのものも含めて使用できるレベルのものは現状少ないと感じています。 diff --git a/content/blog/2024-09-02-ws-sixel.md b/content/blog/2024-09-02-ws-sixel.md new file mode 100644 index 0000000..721cde8 --- /dev/null +++ b/content/blog/2024-09-02-ws-sixel.md @@ -0,0 +1,37 @@ ++++ +date = "2024-09-02" +tags = ["windows"] +title = "windows terminalでsixelを使う" ++++ + +現時点ではwindows terminalの`preview 1.22`で使用できるようになりました。 + +https://github.com/microsoft/terminal/releases + +![](/img/windows_terminal_sixel.png) + +最も手っ取り早くlibsixelをbuildする方法はmsys2を使うことです。 + +```sh +$ scoop install msys2 +# ここでmsys2を起動 +$ msys2 + +$ pacman -S git make gcc +$ git clone https://github.com/saitoha/libsixel +$ cd libsixel +$ ./configure +$ make +$ make install + +$ ls ./converters/img2sixel.exe +$ which img2sixel.exe + +# 画像を表示 +$ img2sixel.exe syui.png + +$ exit +``` + +ref : https://devblogs.microsoft.com/commandline/windows-terminal-preview-1-22-release/ + diff --git a/static/img/windows_terminal_sixel.png b/static/img/windows_terminal_sixel.png new file mode 100644 index 0000000..b2dce55 Binary files /dev/null and b/static/img/windows_terminal_sixel.png differ