Update main/app/app.py
Browse files- main/app/app.py +13 -9
main/app/app.py
CHANGED
|
@@ -159,7 +159,7 @@ js_code = """
|
|
| 159 |
window.getAudioDevices = async function() {
|
| 160 |
if (!navigator.mediaDevices) {
|
| 161 |
setStatus("__MEDIA_DEVICES__");
|
| 162 |
-
return {"inputs":
|
| 163 |
}
|
| 164 |
|
| 165 |
try {
|
|
@@ -168,22 +168,22 @@ js_code = """
|
|
| 168 |
console.error(err);
|
| 169 |
setStatus("__MIC_INACCESSIBLE__")
|
| 170 |
|
| 171 |
-
return {"inputs":
|
| 172 |
}
|
| 173 |
|
| 174 |
const devices = await navigator.mediaDevices.enumerateDevices();
|
| 175 |
-
const inputs =
|
| 176 |
-
const outputs =
|
| 177 |
|
| 178 |
for (const device of devices) {
|
| 179 |
if (device.kind === "audioinput") {
|
| 180 |
-
inputs
|
| 181 |
} else if (device.kind === "audiooutput") {
|
| 182 |
-
outputs
|
| 183 |
}
|
| 184 |
}
|
| 185 |
|
| 186 |
-
if (!inputs.length && !outputs.length) return {"inputs":
|
| 187 |
return {"inputs": inputs, "outputs": outputs};
|
| 188 |
};
|
| 189 |
|
|
@@ -226,9 +226,13 @@ js_code = """
|
|
| 226 |
const ReadChunkSize = Math.round(chunk_size * SampleRate / 1000 / 128);
|
| 227 |
const block_frame = parseInt(ReadChunkSize) * 128;
|
| 228 |
const ButtonState = { start_button: true, stop_button: false };
|
|
|
|
| 229 |
|
| 230 |
-
|
|
|
|
|
|
|
| 231 |
|
|
|
|
| 232 |
if (!input_audio_device || !output_audio_device) {
|
| 233 |
setStatus("__PROVIDE_AUDIO_DEVICE__");
|
| 234 |
return ButtonState;
|
|
@@ -428,7 +432,7 @@ js_code = """
|
|
| 428 |
"__PROVIDE_MODEL__", translations["provide_file"].format(filename=translations["model"])
|
| 429 |
)
|
| 430 |
|
| 431 |
-
client_mode =
|
| 432 |
|
| 433 |
with gr.Blocks(
|
| 434 |
title="📱 Vietnamese-RVC GUI BY ANH",
|
|
|
|
| 159 |
window.getAudioDevices = async function() {
|
| 160 |
if (!navigator.mediaDevices) {
|
| 161 |
setStatus("__MEDIA_DEVICES__");
|
| 162 |
+
return {"inputs": {}, "outputs": {}};
|
| 163 |
}
|
| 164 |
|
| 165 |
try {
|
|
|
|
| 168 |
console.error(err);
|
| 169 |
setStatus("__MIC_INACCESSIBLE__")
|
| 170 |
|
| 171 |
+
return {"inputs": {}, "outputs": {}};
|
| 172 |
}
|
| 173 |
|
| 174 |
const devices = await navigator.mediaDevices.enumerateDevices();
|
| 175 |
+
const inputs = {};
|
| 176 |
+
const outputs = {};
|
| 177 |
|
| 178 |
for (const device of devices) {
|
| 179 |
if (device.kind === "audioinput") {
|
| 180 |
+
inputs[device.label] = device.deviceId
|
| 181 |
} else if (device.kind === "audiooutput") {
|
| 182 |
+
outputs[device.label] = device.deviceId
|
| 183 |
}
|
| 184 |
}
|
| 185 |
|
| 186 |
+
if (!Object.keys(inputs).length && !Object.keys(outputs).length) return {"inputs": {}, "outputs": {}};
|
| 187 |
return {"inputs": inputs, "outputs": outputs};
|
| 188 |
};
|
| 189 |
|
|
|
|
| 226 |
const ReadChunkSize = Math.round(chunk_size * SampleRate / 1000 / 128);
|
| 227 |
const block_frame = parseInt(ReadChunkSize) * 128;
|
| 228 |
const ButtonState = { start_button: true, stop_button: false };
|
| 229 |
+
const devices = await window.getAudioDevices();
|
| 230 |
|
| 231 |
+
input_audio_device = devices["inputs"][input_audio_device];
|
| 232 |
+
output_audio_device = devices["outputs"][output_audio_device];
|
| 233 |
+
if (use_monitor_device && devices["outputs"][monitor_output_device]) monitor_output_device = devices["outputs"][monitor_output_device];
|
| 234 |
|
| 235 |
+
try {
|
| 236 |
if (!input_audio_device || !output_audio_device) {
|
| 237 |
setStatus("__PROVIDE_AUDIO_DEVICE__");
|
| 238 |
return ButtonState;
|
|
|
|
| 432 |
"__PROVIDE_MODEL__", translations["provide_file"].format(filename=translations["model"])
|
| 433 |
)
|
| 434 |
|
| 435 |
+
client_mode = "--client" in sys.argv
|
| 436 |
|
| 437 |
with gr.Blocks(
|
| 438 |
title="📱 Vietnamese-RVC GUI BY ANH",
|