ironsource mediation(Unity LevelPlay)를 사용해서 페이스북(Meta) 광고 테스트를 진행중이었는데
무슨 수를 써도 안되서 한참 해매다
비즈니스 설정에 테스트할 페이스북 계정을 추가하고
앱 - 앱 테스트를 활성화해주니 잘됨;;
'공부 > 프로그래밍' 카테고리의 다른 글
c# reference source (0) | 2019.07.08 |
---|
ironsource mediation(Unity LevelPlay)를 사용해서 페이스북(Meta) 광고 테스트를 진행중이었는데
무슨 수를 써도 안되서 한참 해매다
비즈니스 설정에 테스트할 페이스북 계정을 추가하고
앱 - 앱 테스트를 활성화해주니 잘됨;;
c# reference source (0) | 2019.07.08 |
---|
Unity 버전을 2021.3에서 2022.3대로 올리고 나서
잘 사용중이던 쉐이더가 디바이스에서 마젠타로 보이는 문제가 생겼다.
뭔일인지 감이 안잡혀서 한참 해매다가 찾아서 기록함
Tags에
"RenderPipeline" = "UniversalRenderPipeline"
라고 사용중이었는데
"RenderPipeline" = "UniversalPipeline"
로 바꾸니 잘됨
TimelineCopyTool (0) | 2021.06.28 |
---|---|
Unity Path (0) | 2021.05.24 |
Unity Android Profiler 동작 안될때 (0) | 2020.02.13 |
Eyetracking + Blinking (0) | 2019.06.26 |
NGUI 한글 마지막 글자 짤리는 문제 (0) | 2018.03.21 |
wlsdml1114/diff-svc: Singing Voice Conversion via diffusion model (github.com)
yaiconwithminsu/model: 노래민수야고마워 모델 (Diff-SVC) (github.com)
인공 르르땅으로 핫한 Diff-svc 학습방법(로컬 환경, 집 컴퓨터) - YouTube
(위에 전부 링크들임)
wlsdml1114/diff-svc: Singing Voice Conversion via diffusion model (github.com) 을 기반으로
위 GitHub 및 영상들을 참고하여 적용해보았음.
==========================================================================================
점심에 할게 없어서 함 해볼까 싶어서 일단 시작
1. 아나콘다3 설치 (https://www.anaconda.com/products/distribution)
- 환경 변수 자동 설정 옵션만 키고 다음 다음 눌러서 설치
2. ffmpeg 설치 (https://www.gyan.dev/ffmpeg/builds/)
- mp4, avi 등 영상 파일에서 소리만 추출 할 때와 결과물과 음악을 합칠 때 사용
4. 위의 wlsdml1114/diff-svc: Singing Voice Conversion via diffusion model (github.com) Repository Clone함
5. Checkpoint 다운로드
- Nsf Hifigan만 받구 했었는데
binarize때였나 training때였나 에러가 나서 뭐지 싶었는데
로그에서 Hubert를 찾으려다 실패한듯 보여 Hubert도 받아서 넣어주니 잘 됨
* 환경 설정 파트
6. Anaconda 관리자 권한으로 prompt 실행 후 clone받은 프로젝트 폴더로 이동
7. conda create -n diff-svc python=3.9
conda activate diff-svc
8. pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116
pip install -r requirements.txt
9. 설치 완료 후
set PYTHONPATH=.
set CUDA_VISIBLE_DEVICES=0
10. 학습용 파일 10개 제작.
(자료 찾고 받고 만드는데만 4시간 쓴듯..)
- 내가 가진 영상 편집 프로그램이 따로 없어서 윈도우에 탑재되어 있는 프로그램을 썼더니 해상도 최저치가 540이라 시간을 많이 잡아먹음.. (10번같은 경우 짧아졌는데 용량이 더 커진다던지 이런일이 생김 ㅠ)
- 이제와서 생각해보면 에코나 배경음이 안들어간 그냥 말하는 부분도 준비하는게 좋았을듯
11. preprocess 폴더에 제작한 학습용 파일들 다 넣음
12. 걍 python sep_wav.py 때림
15. training폴더의 config_nsf.yaml에서 설정을 바꿈
- config_nsf.yaml 파일 내용 (아래 내용들은 바꾸기 전 내용들. 항목 참고용으로 남김)
config_nsf.yaml
##################################################################################
## original wav dataset folder
## 3번에서 자르고 변환한 결과 wav파일들을 학습데이터로 만들기위해 넣어줄 폴더 이름
raw_data_dir: data/raw/test
## after binarized dataset folder
## 위 폴더에 있는 학습데이터들을 실제 학습에 사용하기위해 binarize한 결과물을 저장할 폴더
binary_data_dir: data/binary/test
## speaker name
## 이건 나중에 결과물 뽑을 때 쓰게될것
speaker_id: test
## trained model will be save this folder
## 학습데이터로 학습한 모델을 저장할 장소
work_dir: checkpoints/test
## batch size
## 모델이 한번에 학습할 양을 정한다 (CUDA out of memory에러가 나면 이 숫자를 줄이면 된다)
max_sentences: 10
## AMP(Automatic Mixed Precision) setting(only GPU) for less VRAM
## AMP를 사용할것인지 설정, 학습시간에 차이는 없지만, 한번에 더 많은 batch를 학습시킬 수 있음.
use_amp: true
load_ckpt: checkpoints/nehito_44khz/nehito_ckpt_steps_1000000.ckpt
##################################################################################
14. preprocess_out 폴더 하위의 final, voice 등 폴더에 파일들이 생성되어 있는데,
voice폴더의 파일들이 적합하지 않을까 싶어서 이것들을 위에 설정한 raw_data_dir폴더로 옮겨줌
15. python preprocessing/binarize.py --config training/config_nsf.yaml
* 학습 시작
16. python run.py --config training/config_nsf.yaml --exp_name test --reset
(자기 직전에 시작해서 출근 직전까지 8시간 정도 돌리다가 일단 종료하고 출근함. 대충 30,000 스텝 좀 넘게 돈걸로 기억)
python run.py --exp_name test로 재시작 확인까진 함
퇴근하구 가서 마저 해보자.
참고한 글들을 다시 보다보니 위의 작업에서 model을 nehito를 사용했는데,
여자 목소리는 liee가 더 적합하다는 듯하다. 결과물을 일단 보고 이상하면 다시해보자.
학습 돌리다가 어느 순간되면 띵! 하고 끝나는 줄 알았는데 아닌가보다.
집에가서 결과물을 한번 뽑아보자
* Tensorboard
일단 시각화해서 보는게 편할듯해서 Tensorboard 설치함
pip install tensorboard
# 설치 후
tensorboard --logdir=checkpoints/test/lightning_logs/lastest
흠 아직 갈 길이 멀다.. 거의 무슨 기계음이 전부이다
(gt와 밑에 음성이 비슷할수록 잘된거라 한다. gt_0과 wav_0을 들어보니 못알아먹을 수준이었다)
이렇게된거 liee로 바꿔서 다시 해보자
liee는 여기서 받았다.
Release LIEE_DIFF-SVC_AI_V2 · julieraptor/LIEE-DIFF-SVC-AI (github.com)
아침에 일어나서 확인
비슷은 한데...
아직 좀 아쉽다. 하루정도만 더 돌려보자.
뭔가 아쉬워서 결과물 하나 뽑아보려는데 에러가 남.
우선
raw 폴더에 원본 파일을 넣고,
infer.py 코드를 수정한다.
(77 line의 model_path값에 지금 뽑힌 체크포인트 최신으로 바꿔준다던지 등등)
python infer.py
돌렸는데,
AssertionError: | ckpt not found in checkpoints/0102_xiaoma_pe/model_ckpt_steps_60000.ckpt.
에러가 난다. 일단 찾아서 넣어주고 돌림
(Releases · MoonInTheRiver/DiffSinger (github.com) 여기서 받음)
결과물 나쁘지 않음. 아직 기계음이 중간중간 섞이는데 더 돌리면 되는건가?
일단 오늘 하루 풀로 돌려보고 회사에서 몰래몰래 찾아봐야겠다
결과물이 flac으로 나와서
#파일 변환
ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3
#합치기.
ffmpeg -i input.mp3 -i bgm.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2[a]" -map "[a]" -ac 2 output.mp3
ffmpeg로 파일 변환 후 bgm과 합침
집에 도착해서 확인하니 44,000스텝에서 멈춰있다 머지???
일단 44,000 기준으로 결과물을 한번 더 뽑아 확인해보니 목소리 자체는 만족할만한 퀄리티가 나왔는데
피치나 기계음이 좀 섞이는게 맘에 안들어서 오늘 밤까지만 더 돌려보자
오후 9시 44분 - 46,000스텝 기준으로 정말 훌륭한 결과가 나왔으나 아직 튀는 구간이 좀 있다
23.08.02 - 4일차
마찬가지로 아침에 일어나서 확인..
결과물이 맘에 든다.
기계음도 상당수 개선되어 결과물을 한번 뽑아보자
거의 다 온거 같은데 살~~~~짝 맘에 안든다.
오늘은 끄고 출근하고 밤에만 돌려보자
회사에서 비는 시간에 자료를 좀 더 찾아봤는데,
lr값을 낮춰 더 정확하게 할 수 있다고 한다.
0.0001 까지 미세 조정해가는게 좋다한다.
위의 스크린샷을 통해 내 세팅을 확인해보니 0.0008이다. 집에가서 0.0003정도로 낮춰서 해보자.
23.08.03 - 5일차
자기 직전 lr값을 0.0001로 낮췄는데 돌리니까 0.0002로 표시된다.
일단 걍 돌리고 일어났더니 114,000 스텝까지 쌓여있다.
결과물이 많이 정교해졌으나 아직 조금조금 튀는데 금요일까지만 돌려보고
계속 그러면 이정도는 직접 조정하는게 맘 편할듯하다
23.08.04 - 6일차
158,000 스텝까지 옴.
거의 다 온거 같은데 오늘 하루종일 한번 돌려보고 마무리 하면 될듯?
20만 스텝 기준으로 나쁘지는 않은데 60만까지 한번 해보자
23.08.06 - 8일차
30만 스텝임
저음 및 일반적인 음역대는 완벽할지두??
고음이 소스가 없어서 좀 이상함
소스를 찾아 추가해보자
그리고 목소리만 있는 깔끔한 소스를 쓰지 않은 탓 + 고음 소스가 없는 탓인지
결국엔 태어나서 한번도 안해본 믹싱 연습을 하게 되는듯..?
스텝 목표치는 60만
23.08.07 - 9일차
퇴근 시간이 다가오기에 고음 고민하면서 농땡이 피우고 있는데 이런걸 찾음
음향 엔지니어가 알려주는 AI 보컬믹싱 1편 - (재료준비와 소리섞기) - AI 음성 채널 (arca.live) - 링크
음역대+데이터 늘려주는 코드 - AI 음성 채널 (arca.live) - 링크
확인해보자
제대로 학습되고 있는지 확인을 위해
보컬의 특징을 잘 학습 못하는것 같은 문제 - AI 음성 채널 (arca.live) - 링크
이것두 확인해보자
----------------------------------------------------------------------------------------------------------------
여러 시도를 더 했었지만 데이터 소스가 부족해서 그런지 실패하고 (비슷하게는 나오는데 결과물이 맘에 안든다)
그냥 테스트 삼아 돌려본 RVC가 훨씬 좋은 퀄리티가 나왔다...
DIFF-SVC는 더이상 사용하지 않을듯
openssl req -x509 -sha256 -days 3650 -nodes -newkey rsa:2048 -subj "/CN=192.168.50.206/C=US/L=San Fransisco" -keyout C:\temp\jenkins_key.key -out C:\temp\jenkins_cert.crt
openssl pkcs12 -export -in "C:\temp\jenkins_cert.crt" -inkey "C:\temp\jenkins_key.key" -out "C:\temp\jenkins.pfx"
keytool -importkeystore -srckeystore "C:\temp\jenkins.pfx" -srcstoretype pkcs12 -destkeystore "C:\temp\jenkins.jks" -deststoretype jks
중간에 JDK 이슈가 있어서 JDK를 한번 받아서 다시 시도했었음
jar plugin exclude BuildConfig (0) | 2021.12.13 |
---|---|
git ignore 목록 사이트 (0) | 2019.01.09 |
Adaptive Scalable Texture Compression (ASTC Format) (0) | 2017.12.01 |
ios Push 관련 코드 저장용 (1) | 2017.06.16 |
git branch 삭제 후 복구 하기 (0) | 2017.05.17 |
buildFeatures {
buildConfig = false
}
build.gradle에 추가
https://developer.android.com/studio/releases/gradle-plugin#buildFeatures
https 관련 인증서 생성 기록용 (0) | 2023.07.12 |
---|---|
git ignore 목록 사이트 (0) | 2019.01.09 |
Adaptive Scalable Texture Compression (ASTC Format) (0) | 2017.12.01 |
ios Push 관련 코드 저장용 (1) | 2017.06.16 |
git branch 삭제 후 복구 하기 (0) | 2017.05.17 |
URP shader tag 관련 기록용 (0) | 2023.09.12 |
---|---|
TimelineCopyTool (0) | 2021.06.28 |
Unity Android Profiler 동작 안될때 (0) | 2020.02.13 |
Eyetracking + Blinking (0) | 2019.06.26 |
NGUI 한글 마지막 글자 짤리는 문제 (0) | 2018.03.21 |
출처 - https://codetime.tistory.com/633
============================================================================================
출처 - https://lunchballer.com/archives/72
#유니티 프로파일러를 모바일 디바이스에 연결하기
There is a good descrption about how to remote profiling on device on Unity Manual page (Link). However, sometimes it doesn’t work like that if you miss some parts or mix the procedure. This is easy steps you can follow.
if any device is not attached, you should check if the device driver is installed properly.
Profiler dropdown menu
-------------------------------------------------------------------------------------------------------------------------------------------------
이도저도 하다 안되면 BuildAndRun으로 빌드해서 터널링을 만들고하면 되는 경우도 있음
+ 23.07.25) 위에 방법들 시도해도 전부 안될때,
BuildAndRun 안하고 걍 핸드폰의 USB디버깅을 껏다 키고 다시 허용하면 되는듯?
TimelineCopyTool (0) | 2021.06.28 |
---|---|
Unity Path (0) | 2021.05.24 |
Eyetracking + Blinking (0) | 2019.06.26 |
NGUI 한글 마지막 글자 짤리는 문제 (0) | 2018.03.21 |
Unity 3D 에서 구글 스프레드 시트로 로그 보내기 (0) | 2018.02.02 |
페이스북(Meta) 테스트 광고 관련(iOS) (0) | 2023.12.27 |
---|
using UnityEngine;
using System.Collections;
public class EyeTrackBlink : MonoBehaviour
{
public float eyeMaxOffset = 0.3f; // max amount the eyes are clamped to
public Renderer eyeRend; // eyeball renderer
public Renderer lidRend; // eyelid renderer
public float blinkingTextureAmount = 4f; // amount of frames of blinking animation
public float blinkTimer = 4f; // timer for when to blink again
public float blinkTransition = 0.05f;
Vector2 eyeOffset;
Vector2 eyelidOffset;
float blinkOffset;
float blinkTimerR;
void Start()
{
blinkTimerR = blinkTimer;
blinkOffset = 1 / blinkingTextureAmount;
eyelidOffset = new Vector2(0,0);
lidRend.materials[1].SetTextureScale("_MainTex", new Vector2(blinkOffset, 1));
}
void Update()
{
blinkTimerR -= Time.deltaTime;
if (blinkTimerR <= 0.0f)
{
StartCoroutine(Blink());
}
eyeOffset = new Vector2(transform.localPosition.x, -transform.localPosition.y);
// clamp so the eye doesnt disappear
if(eyeOffset.x < -eyeMaxOffset || eyeOffset.x > eyeMaxOffset)
{
eyeOffset.x = Mathf.Clamp(eyeOffset.x, -eyeMaxOffset, eyeMaxOffset);
}
if(eyeOffset.y < -eyeMaxOffset || eyeOffset.y > eyeMaxOffset)
{
eyeOffset.y = Mathf.Clamp(eyeOffset.y, -eyeMaxOffset, eyeMaxOffset);
}
// send offset to shader
eyeRend.material.SetTextureOffset("_MainTex", eyeOffset);
}
IEnumerator Blink()
{
// animating 1 - 2 - 3 - 4 - 3 - 1, if you have more or less blinking animation frames, add or delete them here
blinkTimerR = blinkTimer + Random.Range(-1,1); // slight randomisation to the blinking
lidRend.materials[1].SetTextureOffset("_MainTex", eyelidOffset); //1
yield return new WaitForSeconds(blinkTransition);
lidRend.materials[1].SetTextureOffset("_MainTex", new Vector2(eyelidOffset.x + blinkOffset, 0)); //2
yield return new WaitForSeconds(blinkTransition);
lidRend.materials[1].SetTextureOffset("_MainTex", new Vector2(eyelidOffset.x + (blinkOffset * 2), 0)); //3
yield return new WaitForSeconds(blinkTransition);
lidRend.materials[1].SetTextureOffset("_MainTex", new Vector2(eyelidOffset.x + (blinkOffset * 3), 0)); //4
yield return new WaitForSeconds(blinkTransition);
lidRend.materials[1].SetTextureOffset("_MainTex", new Vector2(eyelidOffset.x + (blinkOffset * 2), 0)); //3
yield return new WaitForSeconds(blinkTransition);
lidRend.materials[1].SetTextureOffset("_MainTex", eyelidOffset); //1
}
}
출처 : https://twitter.com/minionsart/status/948235509825966080
- 추가
위 자료처럼 분리해서 위치를 잡아준 뒤, Unity Timeline상에서 Material의 Offset값을 애니메이션하여 적용함
Unity Path (0) | 2021.05.24 |
---|---|
Unity Android Profiler 동작 안될때 (0) | 2020.02.13 |
NGUI 한글 마지막 글자 짤리는 문제 (0) | 2018.03.21 |
Unity 3D 에서 구글 스프레드 시트로 로그 보내기 (0) | 2018.02.02 |
Execution Order of Event Functions(Unity 함수 실행 순서) (0) | 2018.01.16 |