mirror of
https://github.com/w-okada/voice-changer.git
synced 2025-02-02 16:23:58 +03:00
update
This commit is contained in:
parent
acc0130e7c
commit
4f534a2c44
5
client/demo/build-voice-changer-js.sh
Normal file
5
client/demo/build-voice-changer-js.sh
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
cd ~/git-work/voice-changer-js/lib/ ; npm run build:dev; cd -
|
||||||
|
rm -rf node_modules/@dannadori/voice-changer-js
|
||||||
|
mkdir -p node_modules/@dannadori/voice-changer-js/dist
|
||||||
|
cp -r ~/git-work/voice-changer-js/lib/package.json node_modules/@dannadori/voice-changer-js/
|
||||||
|
cp -r ~/git-work/voice-changer-js/lib/dist node_modules/@dannadori/voice-changer-js/
|
@ -22,7 +22,7 @@
|
|||||||
"name": "configArea",
|
"name": "configArea",
|
||||||
"options": {
|
"options": {
|
||||||
"detectors": ["dio", "harvest", "crepe", "crepe_full", "crepe_tiny", "rmvpe", "rmvpe_onnx"],
|
"detectors": ["dio", "harvest", "crepe", "crepe_full", "crepe_tiny", "rmvpe", "rmvpe_onnx"],
|
||||||
"inputChunkNums": [1, 2, 8, 16, 24, 32, 40, 48, 64, 80, 96, 112, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024, 2048]
|
"inputChunkNums": [1, 2, 8, 16, 24, 32, 40, 48, 64, 80, 96, 112, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024, 2048, 4096, 8192, 16384]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
11
client/demo/dist/index.html
vendored
11
client/demo/dist/index.html
vendored
@ -1 +1,10 @@
|
|||||||
<!doctype html><html style="width:100%;height:100%;overflow:hidden"><head><meta charset="utf-8"/><title>Voice Changer Client Demo</title><script defer="defer" src="index.js"></script></head><body style="width:100%;height:100%;margin:0"><div id="app" style="width:100%;height:100%"></div></body></html>
|
<!DOCTYPE html>
|
||||||
|
<html style="width: 100%; height: 100%; overflow: hidden">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Voice Changer Client Demo</title>
|
||||||
|
<script defer src="index.js"></script></head>
|
||||||
|
<body style="width: 100%; height: 100%; margin: 0px">
|
||||||
|
<div id="app" style="width: 100%; height: 100%"></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
BIN
client/demo/dist/ort-wasm-simd.wasm
vendored
Normal file
BIN
client/demo/dist/ort-wasm-simd.wasm
vendored
Normal file
Binary file not shown.
1236
client/demo/package-lock.json
generated
1236
client/demo/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -54,12 +54,16 @@
|
|||||||
"webpack-dev-server": "^4.15.1"
|
"webpack-dev-server": "^4.15.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@alexanderolsen/libsamplerate-js": "^2.0.4",
|
||||||
"@dannadori/voice-changer-client-js": "^1.0.173",
|
"@dannadori/voice-changer-client-js": "^1.0.173",
|
||||||
|
"@dannadori/worker-manager": "^1.0.12",
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.4.2",
|
"@fortawesome/fontawesome-svg-core": "^6.4.2",
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.4.2",
|
"@fortawesome/free-brands-svg-icons": "^6.4.2",
|
||||||
"@fortawesome/free-regular-svg-icons": "^6.4.2",
|
"@fortawesome/free-regular-svg-icons": "^6.4.2",
|
||||||
"@fortawesome/free-solid-svg-icons": "^6.4.2",
|
"@fortawesome/free-solid-svg-icons": "^6.4.2",
|
||||||
"@fortawesome/react-fontawesome": "^0.2.0",
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
||||||
|
"@tensorflow/tfjs": "^4.11.0",
|
||||||
|
"onnxruntime-web": "^1.16.1",
|
||||||
"protobufjs": "^7.2.5",
|
"protobufjs": "^7.2.5",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0"
|
"react-dom": "^18.2.0"
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
"name": "configArea",
|
"name": "configArea",
|
||||||
"options": {
|
"options": {
|
||||||
"detectors": ["dio", "harvest", "crepe", "crepe_full", "crepe_tiny", "rmvpe", "rmvpe_onnx"],
|
"detectors": ["dio", "harvest", "crepe", "crepe_full", "crepe_tiny", "rmvpe", "rmvpe_onnx"],
|
||||||
"inputChunkNums": [1, 2, 8, 16, 24, 32, 40, 48, 64, 80, 96, 112, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024, 2048]
|
"inputChunkNums": [1, 2, 8, 16, 24, 32, 40, 48, 64, 80, 96, 112, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024, 2048, 4096, 8192, 16384]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -13,7 +13,7 @@ export const ConvertArea = (props: ConvertProps) => {
|
|||||||
const convertArea = useMemo(() => {
|
const convertArea = useMemo(() => {
|
||||||
let nums: number[];
|
let nums: number[];
|
||||||
if (!props.inputChunkNums) {
|
if (!props.inputChunkNums) {
|
||||||
nums = [8, 16, 24, 32, 40, 48, 64, 80, 96, 112, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024, 2048];
|
nums = [8, 16, 24, 32, 40, 48, 64, 80, 96, 112, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024, 2048, 4096, 8192, 16384];
|
||||||
} else {
|
} else {
|
||||||
nums = props.inputChunkNums;
|
nums = props.inputChunkNums;
|
||||||
}
|
}
|
||||||
|
@ -54,5 +54,18 @@ module.exports = {
|
|||||||
new CopyPlugin({
|
new CopyPlugin({
|
||||||
patterns: [{ from: "public/favicon.ico", to: "favicon.ico" }],
|
patterns: [{ from: "public/favicon.ico", to: "favicon.ico" }],
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
new CopyPlugin({
|
||||||
|
patterns: [{ from: "./node_modules/@dannadori/voice-changer-js/dist/ort-wasm-simd.wasm", to: "ort-wasm-simd.wasm" }],
|
||||||
|
}),
|
||||||
|
new CopyPlugin({
|
||||||
|
patterns: [{ from: "./node_modules/@dannadori/voice-changer-js/dist/process.js", to: "process.js" }],
|
||||||
|
}),
|
||||||
|
new CopyPlugin({
|
||||||
|
patterns: [{ from: "public/models/emb_pit_24000.bin", to: "models/emb_pit_24000.bin" }],
|
||||||
|
}),
|
||||||
|
new CopyPlugin({
|
||||||
|
patterns: [{ from: "public/models/rvc2v_24000.bin", to: "models/rvc2v_24000.bin" }],
|
||||||
|
}),
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
@ -493,7 +493,7 @@ export type ClientSetting = {
|
|||||||
};
|
};
|
||||||
export const DefaultClientSettng: ClientSetting = {
|
export const DefaultClientSettng: ClientSetting = {
|
||||||
workletSetting: {
|
workletSetting: {
|
||||||
numTrancateTreshold: 100,
|
numTrancateTreshold: 512 * 2,
|
||||||
volTrancateThreshold: 0.0005,
|
volTrancateThreshold: 0.0005,
|
||||||
volTrancateLength: 32,
|
volTrancateLength: 32,
|
||||||
},
|
},
|
||||||
|
@ -8,8 +8,8 @@ export type UseWorkletSettingProps = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export type WorkletSettingState = {
|
export type WorkletSettingState = {
|
||||||
// setting: WorkletSetting;
|
setting: WorkletSetting;
|
||||||
// setSetting: (setting: WorkletSetting) => void;
|
_setSetting: (setting: WorkletSetting) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const useWorkletSetting = (props: UseWorkletSettingProps): WorkletSettingState => {
|
export const useWorkletSetting = (props: UseWorkletSettingProps): WorkletSettingState => {
|
||||||
@ -29,7 +29,7 @@ export const useWorkletSetting = (props: UseWorkletSettingProps): WorkletSetting
|
|||||||
// }, [props.voiceChangerClient])
|
// }, [props.voiceChangerClient])
|
||||||
|
|
||||||
return {
|
return {
|
||||||
// setting,
|
setting,
|
||||||
// setSetting,
|
_setSetting,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -34,7 +34,7 @@ class VoiceChangerWorkletProcessor extends AudioWorkletProcessor {
|
|||||||
private BLOCK_SIZE = 128;
|
private BLOCK_SIZE = 128;
|
||||||
private initialized = false;
|
private initialized = false;
|
||||||
private volume = 0;
|
private volume = 0;
|
||||||
private numTrancateTreshold = 150;
|
private numTrancateTreshold = 100;
|
||||||
// private volTrancateThreshold = 0.0005
|
// private volTrancateThreshold = 0.0005
|
||||||
// private volTrancateLength = 32
|
// private volTrancateLength = 32
|
||||||
// private volTrancateCount = 0
|
// private volTrancateCount = 0
|
||||||
@ -102,6 +102,7 @@ class VoiceChangerWorkletProcessor extends AudioWorkletProcessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this.playBuffer.length > this.numTrancateTreshold) {
|
if (this.playBuffer.length > this.numTrancateTreshold) {
|
||||||
|
console.log(`[worklet] Truncate ${this.playBuffer.length} > ${this.numTrancateTreshold}`);
|
||||||
this.trancateBuffer();
|
this.trancateBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,7 +163,8 @@ class RVCModelSlotGenerator(ModelSlotGenerator):
|
|||||||
slot.version = "v2"
|
slot.version = "v2"
|
||||||
elif metadata["version"] == "2.1": # 2.1はclipをonnx内部で実施. realtimeをdisable
|
elif metadata["version"] == "2.1": # 2.1はclipをonnx内部で実施. realtimeをdisable
|
||||||
slot.version = "v2.1"
|
slot.version = "v2.1"
|
||||||
|
elif metadata["version"] == "2.2": # 2.1と同じ
|
||||||
|
slot.version = "v2.2"
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
slot.modelType = EnumInferenceTypes.onnxRVC.value
|
slot.modelType = EnumInferenceTypes.onnxRVC.value
|
||||||
slot.embChannels = 256
|
slot.embChannels = 256
|
||||||
|
@ -69,7 +69,7 @@ class OnnxRVCInferencer(Inferencer):
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
if self.inferencerTypeVersion == "v2.1" or self.inferencerTypeVersion == "v1.1":
|
if self.inferencerTypeVersion == "v2.1" or self.inferencerTypeVersion == "v2.2" or self.inferencerTypeVersion == "v1.1":
|
||||||
res = audio1[0]
|
res = audio1[0]
|
||||||
else:
|
else:
|
||||||
res = np.array(audio1)[0][0, 0]
|
res = np.array(audio1)[0][0, 0]
|
||||||
|
Loading…
Reference in New Issue
Block a user