Demucsã¯é³æ¥œããŒã¿ãAIã䜿ã£ãŠãã©ã ã»ããŒã¹ã»ããŒã«ã«ã»ãã®ä»ã«é«ç²ŸåºŠã«åé¢ããããŒã«ã§ãã
詳现ã¯è©Šçšèšäºããµã³ãã«ãèŠãŠããããšããŠã鳿¥œã²ãŒã (BeatSaber)ã®èé¢äœæã®é³åãã«äŸ¿å©ãããªã®ã§ç޹ä»ãããã®ã§ãããäžè¬ã®äººã«ã¯çµæ§ããŒãã«ãé«ãã§ãã
GUIçã®Demucs-GuiããããŸãããDemucs v3ã§éçºãæ¢ãŸã£ãŠããŠææ°ã®v4ã«ã¯å¯Ÿå¿ããŠããŸããã âçŸåšã¯v4ã«å¯Ÿå¿ããŠããŸãã
Demucsã®ã€ã³ã¹ããŒã«ã¯Pythonã§pip installããã ãã§ãããç°å¢ãæ±ããªãããã«venvã§ä»®æ³ç°å¢ãäœã£ãŠãšããPython3.10ã3.11ã§ã¯ã€ã³ã¹ããŒã«ã«åé¡ãããã®ã§3.9ã䜿ããšããã£ãŠãã©ãããããæ©ã¿ãŸãã
ãªã®ã§ãããŒãžã§ã³ãšç°å¢ã®åé¡ã¯ãPython embeddableã䜿ã£ãŠãDemucsãå«ããpipã§ã®ããã±ãŒãžã€ã³ã¹ããŒã©ãŒã®ããããã¡ã€ã«ãäœæããããšã«ããŸãããŸããå®è¡æã®GUIã¯äœãã®ã倧å€ãªã®ã§ãããããã¡ã€ã«ã«åé¢ããã鳿¥œããŒã¿ãæã蟌ãã§äœ¿ãæ§ã«ããããšæããŸããä»åã¯ãã®äœæãŸã§ã®èšäºã§ãã
èšäºã®å 容ã¯ã©ãã§ãããã®ã§Demucs v4ãã€ã³ã¹ããŒã«ããã人ã¯äžèšãåç §ããŠãã ãããããã¥ã¡ã³ããããã®ã§ç°¡åã«äœ¿ããããã«ãªã£ãŠããŸãã
ãã ããBeatSaberã®äœèçšã«äœã£ãŠããã®ã§ãåé¢ããŒã¿ã® .oggãžå€æïŒ ã³ããŒåŠçãå
¥ã£ãŠããŸããä»ã®çšéã§äœ¿çšããå Žåã¯ãffmpegã®åŠçãªã©ã¯å€ããæ¹ããããããããŸããã âChroMapperã¯.wavã§ãèªããããoggãžã®å€æã¯æ¢ããŸããã
䜿ããã®
Python embeddable package
è¶ è»œéãªPythonã®å®è¡ç°å¢ã§ããã€ã³ã¹ããŒã«ãäžèŠã§åç¬ã§å®è¡ã§ããã®ã§ãäœãã®ãœããã«çµã¿èŸŒãã§äœ¿ããšãé åžããã®ã«äŸ¿å©ã§ãã
get-pip.py
Python embeddableã§pipã䜿ãããã«å¿ èŠã§ãã
FFmpeg
Windowsã§ã¯å ¥åããŒã¿ãã©ãŒãããã®torchaudioãµããŒããéå®çãªã®ã§ffmpegãå¿ èŠã«ãªããŸããããšãä»åã¯åé¢åŸã®ããŒã¿ãoggã«å€æããã®ã«ã䜿çšããŸãã
é åžæ¹æ³
Python embeddableã§Demucsãå¿ èŠããã±ãŒãžãã€ã³ã¹ããŒã«å®äºããç¶æ ã§ããŸãã£ãšzipã§åºããŠé åžãèããã®ã§ãã以äžã®çç±ã§æ¢ããŸããã
- ãµã€ãºã巚倧ã«ãªã(GPU[CUDA]察å¿ã ãš5GBãããã«ãªããŸã)
- ç°å¢ã«ãã£ãŠPyTorchãCPUã®ã¿ã»CUDA察å¿ãªã©å€ããã
- pipã§ã®ã€ã³ã¹ããŒã«æã«ãã€ã³ã¹ããŒã«ç°å¢ã®Pythonãã¹ãScriptsãã©ã«ãã®exeããLib\site-packagesã®__pycache__ã®pycã«åã蟌ãŸãã
- åé¢åŠç¿ããŒã¿ãååå®è¡æã«C:\Users\ãŠãŒã¶å.cache\torch\hub\checkpointsã«ä¿åããããçµå±ãªãããã®ããŠã³ããŒããå¿ é ã«ãªã
- ã€ã³ã¹ããŒã«ãããããã±ãŒãžã®ã©ã€ã»ã³ã¹ç¢ºèªãããã©ããã
ãªã®ã§ãPython embeddable, get-pip.py, FFmpeg ã®3ã€ãåºããŠé
åžããããšã«ããŸãã
Demucsãå®è¡ã«å¿
èŠãªããã±ãŒãžã¯ããããã¡ã€ã«ã§ã€ã³ã¹ããŒã«ããããã«ããŸãã
ãã¡ãªãããšããŠã¯ãä»ã¯ã€ã³ã¹ããŒã«ã§ãããã©å°æ¥çã«Pythonã®ããŒãžã§ã³ãåããªããªã£ãŠã€ã³ã¹ããŒã«ã§ããªããªãã§ãããããã®ãšãã«ã€ã³ã¹ããŒã©ãäœãçŽãããã®åå¿é²çèšäºã§ããããŸãã
é åžããŒã«ã®ããŠã³ããŒã
Python embeddable package
ãããããPython3.9ã®äžçªæ°ããäžèšãããŠã³ããŒãããŸãã
Windows embeddable package (64-bit) 3.9.13
https://www.python.org/ftp/python/3.9.13/python-3.9.13-embed-amd64.zip
â»3.10ã3.11ã§è©ŠããŸãããããã¯ãDemucsã®ã€ã³ã¹ããŒã«éäžã§æ¢ãŸãã®ã§3.9ã䜿ããŸãã
FFmpeg
ãããããlatest git master branch buildãããŠã³ããŒãããŸããããŒãžã§ã³ã¯README.txtã«èšèŒããããŸããç§ãããŠã³ããŒãããã®ã¯ãversion: 2023-07-06-git-f00222e81f ã§ãã
https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z
get-pip.py
äžèšãããŠã³ããŒãããŸãã
https://bootstrap.pypa.io/get-pip.py
MITã©ã€ã»ã³ã¹ãªã®ã§ããã¡ããããŠã³ããŒãããŠget-pip_LICENSE.txtãšããŠäžç·ã«çœ®ããŠãããŸãã
https://raw.githubusercontent.com/pypa/get-pip/main/LICENSE.txt
é åžç°å¢æ§ç¯
pythonãšffmpegã眮ããã©ã«ããäœæããŠè§£åããŸãã
ããããããããã«ããŒãžã§ã³è¡šèšã®ãã©ã«ãåã«ããŸããã
pythonã®ãã©ã«ãã«ã¯get-pip.pyãšget-pip_LICENSE.txtãã³ããŒããŸãã
æçµçã«ã¯ãããªæãã«ããŸãã
+-+- ffmpeg-2023-07-06-git-f00222e81f-full_build â(ffmpeg-git-full.7zãè§£å)
| +- python-3.9.13-embed-amd64 + â(python-3.9.13-embed-amd64.zipãè§£å)
| | +- get-pip.py â(ããŠã³ããŒããããã®ã远å )
| | +- get-pip_LICENSE.txt â(get-pipã®MIT LICENSE)
| | +- python_cmd.bat â(Pythonç°å¢ã³ãã³ãããã³ãã衚瀺çš:å®è¡çš)
| | +- python_open.bat â(Pythonç°å¢ã³ãã³ãããã³ãã衚瀺çš)
| | +- python39._pth â(ç·šéïŒimport siteã®ã³ã¡ã³ãã¢ãŠããå€ã)
| +- INSTALLER +- INSTALL_CPU.BAT â(ã€ã³ã¹ããŒã©ããããã¡ã€ã«ãç°å¢æ¯ã«äœæ)
| +- INSTALL_CPU_GIT.BAT
| +- INSTALL_GPU_CUDA117.BAT
| +- INSTALL_GPU_CUDA117_GIT.BAT
| +- INSTALL_GPU_CUDA118.BAT
| +- INSTALL_GPU_CUDA118_GIT.BAT
+- htdemucs_split.bat â(å®è¡çšããããã¡ã€ã«ãåé¢ã¢ãã«æ¯ã«äœæ)
+- htdemucs_ft_split.bat
+- htdemucs_6s_split.bat
+- hdemucs_mmi_split.bat
+- mdx_split.bat
+- mdx_extra_split.bat
+- mdx_q_split.bat
+- mdx_extra_q_split.bat
+- README.TXT
Python embeddableã§pipã䜿ããããã«ãã
Python embeddableã¯ããã®ãŸãŸã ãšpipã䜿ããŸããã
ãŸãã¯ãpython39._pthãç·šéããŠimport siteã®ã³ã¡ã³ãã¢ãŠããå€ããŸãã
python39.zip
.
# Uncomment to run site.main() automatically
import site
ããã§ãget-pip.pyãå®è¡ãããšpipã䜿ããããã«ãªããŸãã
ã³ãã³ãããã³ãã衚瀺çšããããã¡ã€ã«
Pythonãã€ã³ã¹ããŒã«æžã¿ã®ç°å¢ã§ãã¹ãéã£ãŠããããããšãã©ã®Pythonã察象ãªã®ãããããªããªããŸãããªã®ã§Python embeddableã察象ãšããã³ãã³ãããã³ããã衚瀺ã§ããããããã¡ã€ã«ãäœæããŸãã
ãŸãã¯ãç°å¢å€æ°ã®PATHã®å€æŽãšãPYTHONïŒç°å¢å€æ°ã®åæåãããç¶æ ã§ã³ãã³ãããã³ãããéãããã«ããŸãã
@ECHO OFF
SET A=%~dp0
SET A=%A:~0,-2%
FOR %%A IN (%A%) DO SET A=%%~dpA
SET PATH=%~dp0;%~dp0Scripts;%A%ffmpeg-2023-07-06-git-f00222e81f-full_build\bin;%PATH%
SET PYTHONHOME=
SET PYTHONPATH=
SET PYTHONSTARTUP=
2ïœ4è¡ç®ã¯%A%ã«ãããããã¡ã€ã«çœ®ãå Žæã®ã²ãšã€äžã®ãã©ã«ããã¹ãåãããã§ãã
5è¡ç®ã§PATHã®å
é ã«Python embeddableãšffmpegã®ãã¹ã远å ããŸãã
6ïœ8è¡ç®ã¯Pythonã®å®è¡ã«åœ±é¿ãã§ãããªç°å¢å€æ°ã®åæåãããŸãã
ãã®ãŸãŸã ãšãããããã¡ã€ã«ãå®è¡ããŠãéããŠããŸãã®ã§ããã®ããããã¡ã€ã«ãåŒã³åºãããã®ããããã¡ã€ã«ãäœæããŸãã
@ECHO OFF
cmd /k python_open.bat
cmd /k ã§åŒã¶ãšãããããã¡ã€ã«ãçµäºããŠãã³ãã³ãããã³ãããéããªããªããŸãã
äœ¿çšæã¯python_cmd.batãå®è¡ããŸãã
ããã§Python embeddableç°å¢ã§æåã€ã³ã¹ããŒã«ããŠã¿ãŠãåé¡ãªããã°ã€ã³ã¹ããŒã«çšã®ããããã¡ã€ã«ãäœæããŸãã
ã€ã³ã¹ããŒã«çšããããã¡ã€ã«
ã€ã³ã¹ããŒã«èªäœã®ã³ãã³ãã¯ä»¥äžã®5ã€ã§ãã(PyTorchã¯CUDA1.18çšãdemucsã¯GitHubããææ°ç)
python get-pip.py
python -m pip install -U ffmpeg
python -m pip install -U torch torchvision torchaudio --index-url https://download.pytorch.org/whl/test/cu118
python -m pip install -U soundfile
python -m pip install -U diffq
python -m pip install -U git+https://github.com/facebookresearch/demucs#egg=demucs
ãã®ãã¡ãPyTorchã¯CPU,CUDAv1.17,CUDAv1.18ã§äžèšïŒçš®é¡ãããŸãã
REM CPUçš
python -m pip install -U torch torchvision torchaudio --index-url https://download.pytorch.org/whl/test/cpu
REM CUDA1.17çš
python -m pip install -U torch torchvision torchaudio --index-url https://download.pytorch.org/whl/test/cu117
REM CUDA1.18çš
python -m pip install -U torch torchvision torchaudio --index-url https://download.pytorch.org/whl/test/cu118
ãŸããdemucsããªãªãŒã¹ãããŠããv4.0.0ããGitã®ææ°çv4.0.1a2ã§äžèšïŒçš®é¡ãããŸãã
REM éåžžç(v4.0.0)
python -m pip install -U demucs
REM GitHubææ°ç(v4.0.1a2)
python -m pip install -U git+https://github.com/facebookresearch/demucs#egg=demucs
ãããã¯IFã§éžæã§ãè¯ãã§ãããã€ã³ã¹ããŒã«äžã®éžæã¯ãããã ãã§ããŒãã«ãäžããã®ã§ããããã¡ã€ã«ãåããããšã«ããŸãã
ããšgitã䜿ãããããã¡ã€ã«ã¯ãgitãç¡ãå Žåã¯å®è¡ããªãããã«äžèšã远å ããŸãã
git -v
if %errorlevel% neq 0 (
echo Git is not installed!!
PAUSE
exit /b
)
ããšã¯ãã³ãã³ãããã³ãã衚瀺çšããããã¡ã€ã«ãšåäœãããŠãPATHã®ç°å¢å€æ°ãä¿®æ£ããŠå®æã§ãã
@ECHO OFF
SET A=%~dp0
SET A=%A:~0,-2%
FOR %%A IN (%A%) DO SET A=%%~dpA
SET PATH=%A%python-3.9.13-embed-amd64;%A%python-3.9.13-embed-amd64\Scripts;%A%ffmpeg-2023-07-06-git-f00222e81f-full_build\bin;%PATH%
SET PYTHONHOME=
SET PYTHONPATH=
SET PYTHONSTARTUP=
CD %A%python-3.9.13-embed-amd64
git -v
if %errorlevel% neq 0 (
echo Git is not installed!!
PAUSE
exit /b
)
python get-pip.py
python -m pip install -U ffmpeg
python -m pip install -U torch torchvision torchaudio --index-url https://download.pytorch.org/whl/test/cu118
python -m pip install -U soundfile
python -m pip install -U diffq
python -m pip install -U git+https://github.com/facebookresearch/demucs#egg=demucs
ECHO ***********************************
ECHO ****** Installation complete ******
ECHO ***********************************
PAUSE
å®è¡çšããããã¡ã€ã«
å®è¡çšã®ããããã¡ã€ã«ã¯ã以äžã®æ§ã«ããŸãã
Python embeddableãšFFmpegã®PATHèšå®ãšãPYTHONïŒç°å¢å€æ°ã®åæåãdemucsã§åé¢ãšffmpegã§oggãžã®å€æã§ãã
@ECHO OFF
SET PATH=%~dp0python-3.9.13-embed-amd64;%~dp0python-3.9.13-embed-amd64\Scripts;%~dp0ffmpeg-2023-07-06-git-f00222e81f-full_build\bin;
SET PYTHONHOME=
SET PYTHONPATH=
SET PYTHONSTARTUP=
python -m demucs -n htdemucs_ft -o "%~dp1separated" %1
python -m demucs --two-stems=vocals -n htdemucs_ft -o "%~dp1separated" %1
ffmpeg -i "%~dp1separated\htdemucs_ft\%~n1\bass.wav" -y -vn -ab 500k -acodec libvorbis -f ogg "%~dp1bass.ogg"
ffmpeg -i "%~dp1separated\htdemucs_ft\%~n1\drums.wav" -y -vn -ab 500k -acodec libvorbis -f ogg "%~dp1drums.ogg"
ffmpeg -i "%~dp1separated\htdemucs_ft\%~n1\no_vocals.wav" -y -vn -ab 500k -acodec libvorbis -f ogg "%~dp1no_vocals.ogg"
ffmpeg -i "%~dp1separated\htdemucs_ft\%~n1\other.wav" -y -vn -ab 500k -acodec libvorbis -f ogg "%~dp1other.ogg"
ffmpeg -i "%~dp1separated\htdemucs_ft\%~n1\vocals.wav" -y -vn -ab 500k -acodec libvorbis -f ogg "%~dp1vocals.ogg"
PAUSE
demucs 㯠-n åé¢ã¢ãã«åã§ãåé¢çšã®AIåŠç¿ã¢ãã«ãæå®ããŸããæå®ããªããšhtdemucsã«ãªããŸãã
| åé¢ã¢ãã«å | 説æ |
|---|---|
| htdemucs | htdemucsã¢ãã« ããã©ã«ãã¢ãã« (Demucs V4ã¢ãã«) |
| htdemucs_ft | htdemucsã®åŸ®èª¿æŽçã§ãåé¢ã«ã¯4åã®æéããããããå°ãè¯ããªããããããªãã |
| htdemucs_6s | htdemucsã®6ãœãŒã¹ããŒãžã§ã³ã§ããã¢ããš ã®ã¿ãŒã远å ãããŠããããã¢ãã¯çŸåšããŸãåäœããŠããªãã®ã§æ³šæã |
| hdemucs_mmi | Demucs V3ã¢ãã« |
| mdx | MusDB HQ(2021幎ã®é³æ¥œåé¢ã³ã³ãã¹ã)çšã«ãã¬ãŒãã³ã°ããã MDXãã£ã¬ã³ãžã®ãã©ãã¯Aã§åªåããã¢ãã«ã |
| mdx_extra | 远å ã®ãã¬ãŒãã³ã°ããŒã¿(MusDBãã¹ãã»ãããå«ã)ã§ãã¬ãŒãã³ã°ããã MDXãã£ã¬ã³ãžã®ãã©ãã¯Bã§2äœã«ã©ã³ã¯ãããã¢ãã«ã |
| mdx_q, mdx_extra_q | 以åã®ã¢ãã«ã®éååããŒãžã§ã³ãããŠã³ããŒã容éãšä¿å容éãå°ãããªã£ãããå質ã¯è¥å¹²æªããªãå¯èœæ§ãããã |
ããšã-o åºåãã©ã«ãã§ãåé¢åŸã®ããŒã¿ä¿åå
ãæå®ã§ããŸããæå®ããªããšå
ããŒã¿ãšåããã©ã«ãã«"separated\ã¢ãã«å\ãã©ãã¯å\ã¹ãã å.æ¡åŒµå"ã§ä¿åãããŸãã
ããããã¡ã€ã«ãçŽæ¥å®è¡ããå Žåã¯-oæå®ããªããŠãè¯ãã§ããããªããããããã¡ã€ã«ã®ã·ã§ãŒãã«ãããäœæããŠãããããå®è¡ãããšåºåå
ãã©ã«ããããããã¡ã€ã«ã®ãããã©ã«ãã«ãªã£ãŠããŸããŸãããã®ããã-o "%~dp1separated" ã§æªæå®ãšåãã«ãªãããã«æå®ããŠããŸãã
ããšãããŒã«ã«ä»¥å€(ããããã€ã³ã¹ãã»ã«ã©ãªã±)ãæ¬²ããã®ã§ã--two-stems=vocalsãã€ããŠåå®è¡ããŠããŸãã
ffmpegã¯oggãžã®å€æãšã倿ããŒã¿ãå
ããŒã¿ãšåããã©ã«ãã«ã³ããŒããããã§ãã
BeatSaberã®èé¢ããŒã¿ã¯ãæ²ãã©ã«ãã«song.oggã§æ²ããŒã¿ãä¿åããã®ãäžè¬çãªã®ã§ãåããã©ã«ãã«ã¹ãã æ¯ã«å¥ããoggãã¡ã€ã«ãããã°äœèãœããã§åãæ¿ããããã®ã§ãããããŠããŸãã
flacãmp3åãªãdemucsã ãã§ã§ããã®ã§ãffmpegã®åŠçãæ¢ããŠdemucsã«--flac, --mp3, --mp3-bitrateæå®ããŠãè¯ãã§ãããã
demucsã®ãªãã·ã§ã³ã®èª¬æã¯å ¬åŒã®READMEã«èª¬æããããŸããã埮åŠã«èª¬æãè¶³ããªãã®ã§ã³ãã³ãã®--helpãèªãã ã»ããããã§ããDeepLã§æ¥æ¬èªèš³ãããã®ãäžèšã«ä¹ããŠãããŸãã
| ãªãã·ã§ã³ | 説æ |
|---|---|
| -h, --help | ãã®ãã«ãã¡ãã»ãŒãžã衚瀺ããŠçµäºããŸãã |
| -s SIG, --sig SIG | ããŒã«ã«ã§åŠç¿ãããXPã®ã·ã°ããã£ã |
| -n NAME, --name NAME | äºååŠç¿ãããã¢ãã«åãŸãã¯ã·ã°ããã£ãããã©ã«ã㯠htdemucs |
| --repo REPO | -nã§äœ¿çšãããã¹ãŠã®äºååŠç¿æžã¿ã¢ãã«ãå«ããã©ã«ãã |
| -v, --verbose | |
| -o OUT, --out OUT | æœåºããããã©ãã¯ã眮ããã©ã«ããã¢ãã«åã®ãµããã©ã«ããäœæãããŸãã |
| --filename FILENAME | åºåãã¡ã€ã«åãèšå®ã"{track}", "{trackext}", "{stem}", "{ext}" ã䜿çšãããšãæ¡åŒµåãªãã®ãã©ãã¯åããã©ãã¯æ¡åŒµåãã¹ãã åãããã³ããã©ã«ãã®åºåãã¡ã€ã«æ¡åŒµåã®å€æ°ã䜿çšã§ããŸããããã©ã«ã㯠"{track}/{stem}.{ext}"ã |
| -d DEVICE, --device DEVICE | 䜿çšããããã€ã¹ãããã©ã«ãã¯å©çšå¯èœãªã cudaãããã§ãªããã° cpuã |
| --shifts SHIFTS | çå€éå®å®åã®ããã®ã©ã³ãã ã·ããæ°.å颿éã¯å¢ããããDemucsã®å質ã¯åäžãå ã®è«æã§ã¯10ã䜿çšã |
| --overlap OVERLAP | åå²ã®éãªãã |
| --no-split | ãã£ã³ã¯ã§ãªãŒãã£ãªãåå²ããŸãããããã¯å€§éã®ã¡ã¢ãªã䜿ãå¯èœæ§ããããŸãã |
| --segment SEGMENT | åãã£ã³ã¯ã®åå²ãµã€ãºãèšå®ããŸããã°ã©ãã£ãã¯ã«ãŒãã®ã¡ã¢ãªãç¯çŽã§ããŸãã |
| --two-stems STEM | é³å£°ã {STEM} ãš no_{STEM} ã«ã®ã¿åå²ããŸãã |
| --int24 | wavåºåã24ãããwavãšããŠä¿åããŸãã |
| --float32 | float32ãšããŠwavåºåãä¿åããŸãïŒ2å倧ããïŒã |
| --clip-mode {rescale,clamp} | ã¯ãªããã³ã°ãé¿ããããã®æŠç¥ïŒå¿ èŠã«å¿ããŠä¿¡å·å šäœãåã¹ã±ãŒãªã³ã°ãããïŒrescaleïŒãããŒãã¯ãªããã³ã°ãããïŒclampïŒã |
| --flac | åºåwavã flacã«å€æããŸãã |
| --mp3 | åºåwavã mp3 ã«å€æããŸãã |
| --mp3-bitrate MP3_BITRATE | 倿åŸã®mp3ã®ãããã¬ãŒãã |
| -j JOBS, --jobs JOBS | ãžã§ãã®æ°ãããã¯ã¡ã¢ãªäœ¿çšéãå¢å ãããŸããããã«ãã³ã¢ãå©çšå¯èœãªå Žåã¯ããé«éã«ãªããŸãã |
é åž
å šéšæºåãã§ããããREADMEãäœæããŠãZIPã§åºããŠé åžããŸãã
äœ¿ãæ¹
ã€ã³ã¹ããŒã«ã¯ã€ã³ã¹ããŒã«çšããããã¡ã€ã«ãå®è¡ããã ãã§ããåºæ¬çã«ã¯CUDA1.18çšã®éåžžçINSTALL_GPU_CUDA118.BATãªããCUDAã䜿ããªãå Žåã¯CPUåäœã«ãªãã®ã§ã誰ã§ãåé¡ãªãåãã¯ãã§ãã
å®è¡æã¯åé¢ããã鳿¥œããŒã¿ããå®è¡ããããã¡ã€ã«ã«ãã©ãã°ïŒããããã§è²Œãä»ããŠå®è¡ããŸããã·ã§ãŒãã«ãããäœæããŠãåäœããã®ã§ãå¥ã®å ŽæãSendToã«ãããŠãå³ã¯ãªãã¯ã®éãããå®è¡ããŠãè¯ãã§ãããã