mirror of
https://github.com/w-okada/voice-changer.git
synced 2025-01-23 05:25:01 +03:00
add DiffSinger Community Vocoders link
This commit is contained in:
parent
022fda0aa6
commit
e6a3ae241d
7
LICENSE-NOTICE
Normal file
7
LICENSE-NOTICE
Normal file
@ -0,0 +1,7 @@
|
||||
1. Diffusion SVC, DDSP SVC は vocodeer は DiffSinger Community Vocoders を使用しています。次のリンクからライセンスをご確認ください。
|
||||
別のモデルを使用する場合は pretrain\\nsf_hifigan に設置してください。
|
||||
https://openvpi.github.io/vocoders/
|
||||
|
||||
Diffusion SVC and DDSP SVC uses DiffSinger Community Vocoders. Please check the license from the following link.
|
||||
Please place it on pretrain\\nsf_hifigan if you are using a different model.
|
||||
https://openvpi.github.io/vocoders/
|
17
client/demo/dist/index.js
vendored
17
client/demo/dist/index.js
vendored
File diff suppressed because one or more lines are too long
@ -22,6 +22,8 @@ export const OpenGetServerInformationDialogCheckbox = "open-get-server-informati
|
||||
export const OpenGetClientInformationDialogCheckbox = "open-get-client-information-dialog-checkbox";
|
||||
|
||||
export const OpenTextInputDialogCheckbox = "open-text-input-dialog-checkbox";
|
||||
export const OpenShowLicenseDialogCheckbox = "open-show-license-dialog-checkbox";
|
||||
|
||||
type Props = {
|
||||
children: ReactNode;
|
||||
};
|
||||
@ -45,6 +47,7 @@ export type StateControls = {
|
||||
showGetServerInformationCheckbox: StateControlCheckbox;
|
||||
showGetClientInformationCheckbox: StateControlCheckbox;
|
||||
showTextInputCheckbox: StateControlCheckbox;
|
||||
showLicenseCheckbox: StateControlCheckbox;
|
||||
};
|
||||
|
||||
type GuiStateAndMethod = {
|
||||
@ -181,6 +184,7 @@ export const GuiStateProvider = ({ children }: Props) => {
|
||||
const showGetClientInformationCheckbox = useStateControlCheckbox(OpenGetClientInformationDialogCheckbox);
|
||||
|
||||
const showTextInputCheckbox = useStateControlCheckbox(OpenTextInputDialogCheckbox);
|
||||
const showLicenseCheckbox = useStateControlCheckbox(OpenShowLicenseDialogCheckbox);
|
||||
|
||||
useEffect(() => {
|
||||
openServerControlCheckbox.updateState(true);
|
||||
@ -202,6 +206,7 @@ export const GuiStateProvider = ({ children }: Props) => {
|
||||
showGetClientInformationCheckbox.updateState(false);
|
||||
|
||||
showTextInputCheckbox.updateState(false);
|
||||
showLicenseCheckbox.updateState(false);
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
@ -241,6 +246,7 @@ export const GuiStateProvider = ({ children }: Props) => {
|
||||
showGetClientInformationCheckbox,
|
||||
|
||||
showTextInputCheckbox,
|
||||
showLicenseCheckbox,
|
||||
},
|
||||
isConverting,
|
||||
setIsConverting,
|
||||
|
@ -4,95 +4,112 @@ import { isDesktopApp } from "../../const";
|
||||
import { useAppRoot } from "../../001_provider/001_AppRootProvider";
|
||||
import { useMessageBuilder } from "../../hooks/useMessageBuilder";
|
||||
|
||||
|
||||
export const StartingNoticeDialog = () => {
|
||||
const guiState = useGuiState()
|
||||
const { appGuiSettingState } = useAppRoot()
|
||||
const guiState = useGuiState();
|
||||
const { appGuiSettingState } = useAppRoot();
|
||||
|
||||
const messageBuilderState = useMessageBuilder()
|
||||
const messageBuilderState = useMessageBuilder();
|
||||
useMemo(() => {
|
||||
messageBuilderState.setMessage(__filename, "support", { "ja": "支援", "en": "Donation" })
|
||||
messageBuilderState.setMessage(__filename, "support_message_1", { "ja": "このソフトウェアを気に入ったら開発者にコーヒーをご馳走してあげよう。黄色いアイコンから。", "en": "This software is supported by donations. Thank you for your support!" })
|
||||
messageBuilderState.setMessage(__filename, "support_message_2", { "ja": "コーヒーをご馳走する。", "en": "I will support a developer by buying coffee." })
|
||||
|
||||
messageBuilderState.setMessage(__filename, "directml_1", { "ja": "directML版は実験的バージョンです。以下の既知の問題があります。", "en": "DirectML version is an experimental version. There are the known issues as follows." })
|
||||
messageBuilderState.setMessage(__filename, "directml_2", { "ja": "(1) 一部の設定変更を行うとgpuを使用していても変換処理が遅くなることが発生します。もしこの現象が発生したらGPUの値を-1にしてから再度0に戻してください。", "en": "(1) When some settings are changed, conversion process becomes slow even when using GPU. If this occurs, reset the GPU value to -1 and then back to 0." })
|
||||
messageBuilderState.setMessage(__filename, "click_to_start", { "ja": "スタートボタンを押してください。", "en": "Click to start" })
|
||||
messageBuilderState.setMessage(__filename, "start", { "ja": "スタート", "en": "start" })
|
||||
|
||||
}, [])
|
||||
|
||||
messageBuilderState.setMessage(__filename, "support", { ja: "支援", en: "Donation" });
|
||||
messageBuilderState.setMessage(__filename, "support_message_1", { ja: "このソフトウェアを気に入ったら開発者にコーヒーをご馳走してあげよう。黄色いアイコンから。", en: "This software is supported by donations. Thank you for your support!" });
|
||||
messageBuilderState.setMessage(__filename, "support_message_2", { ja: "コーヒーをご馳走する。", en: "I will support a developer by buying coffee." });
|
||||
|
||||
messageBuilderState.setMessage(__filename, "directml_1", { ja: "directML版は実験的バージョンです。以下の既知の問題があります。", en: "DirectML version is an experimental version. There are the known issues as follows." });
|
||||
messageBuilderState.setMessage(__filename, "directml_2", {
|
||||
ja: "(1) 一部の設定変更を行うとgpuを使用していても変換処理が遅くなることが発生します。もしこの現象が発生したらGPUの値を-1にしてから再度0に戻してください。",
|
||||
en: "(1) When some settings are changed, conversion process becomes slow even when using GPU. If this occurs, reset the GPU value to -1 and then back to 0.",
|
||||
});
|
||||
messageBuilderState.setMessage(__filename, "click_to_start", { ja: "スタートボタンを押してください。", en: "Click to start" });
|
||||
messageBuilderState.setMessage(__filename, "start", { ja: "スタート", en: "start" });
|
||||
}, []);
|
||||
|
||||
const coffeeLink = useMemo(() => {
|
||||
return isDesktopApp() ?
|
||||
(
|
||||
// @ts-ignore
|
||||
<span className="link" onClick={() => { window.electronAPI.openBrowser("https://www.buymeacoffee.com/wokad") }}>
|
||||
<img className="donate-img" src="./assets/buymeacoffee.png" /> {messageBuilderState.getMessage(__filename, "support_message_2")}
|
||||
</span>
|
||||
)
|
||||
:
|
||||
(
|
||||
<a className="link" href="https://www.buymeacoffee.com/wokad" target="_blank" rel="noopener noreferrer">
|
||||
<img className="donate-img" src="./assets/buymeacoffee.png" /> {messageBuilderState.getMessage(__filename, "support_message_2")}
|
||||
</a>
|
||||
)
|
||||
}, [])
|
||||
|
||||
|
||||
return isDesktopApp() ? (
|
||||
// @ts-ignore
|
||||
<span
|
||||
className="link"
|
||||
onClick={() => {
|
||||
// @ts-ignore
|
||||
window.electronAPI.openBrowser("https://www.buymeacoffee.com/wokad");
|
||||
}}
|
||||
>
|
||||
<img className="donate-img" src="./assets/buymeacoffee.png" /> {messageBuilderState.getMessage(__filename, "support_message_2")}
|
||||
</span>
|
||||
) : (
|
||||
<a className="link" href="https://www.buymeacoffee.com/wokad" target="_blank" rel="noopener noreferrer">
|
||||
<img className="donate-img" src="./assets/buymeacoffee.png" /> {messageBuilderState.getMessage(__filename, "support_message_2")}
|
||||
</a>
|
||||
);
|
||||
}, []);
|
||||
|
||||
const licenseNoticeLink = useMemo(() => {
|
||||
return isDesktopApp() ? (
|
||||
// @ts-ignore
|
||||
<span
|
||||
className="link"
|
||||
onClick={() => {
|
||||
// @ts-ignore
|
||||
window.electronAPI.openBrowser("https://github.com/w-okada/voice-changer/blob/master/LICENSE-NOTICE");
|
||||
}}
|
||||
>
|
||||
License Notice
|
||||
</span>
|
||||
) : (
|
||||
<a className="link" href="https://github.com/w-okada/voice-changer/blob/master/LICENSE-NOTICE" target="_blank" rel="noopener noreferrer">
|
||||
License Notice
|
||||
</a>
|
||||
);
|
||||
}, []);
|
||||
|
||||
const dialog = useMemo(() => {
|
||||
const closeButtonRow = (
|
||||
<div className="body-row split-3-4-3 left-padding-1">
|
||||
<div className="body-item-text">
|
||||
</div>
|
||||
<div className="body-item-text"></div>
|
||||
<div className="body-button-container body-button-container-space-around">
|
||||
<div className="body-button" onClick={() => { guiState.stateControls.showStartingNoticeCheckbox.updateState(false) }} >
|
||||
<div
|
||||
className="body-button"
|
||||
onClick={() => {
|
||||
guiState.stateControls.showStartingNoticeCheckbox.updateState(false);
|
||||
}}
|
||||
>
|
||||
{messageBuilderState.getMessage(__filename, "start")}
|
||||
</div>
|
||||
</div>
|
||||
<div className="body-item-text"></div>
|
||||
</div>
|
||||
)
|
||||
);
|
||||
|
||||
const donationMessage = (
|
||||
<div className="dialog-content-part">
|
||||
<div>
|
||||
{messageBuilderState.getMessage(__filename, "support_message_1")}
|
||||
</div>
|
||||
<div>
|
||||
{coffeeLink}
|
||||
</div>
|
||||
<div>{messageBuilderState.getMessage(__filename, "support_message_1")}</div>
|
||||
<div>{coffeeLink}</div>
|
||||
</div>
|
||||
)
|
||||
);
|
||||
|
||||
const directMLMessage = (
|
||||
<div className="dialog-content-part">
|
||||
<div>
|
||||
{messageBuilderState.getMessage(__filename, "directml_1")}
|
||||
</div>
|
||||
<div className="left-padding-1">
|
||||
{messageBuilderState.getMessage(__filename, "directml_2")}
|
||||
</div>
|
||||
<div>{messageBuilderState.getMessage(__filename, "directml_1")}</div>
|
||||
<div className="left-padding-1">{messageBuilderState.getMessage(__filename, "directml_2")}</div>
|
||||
</div>
|
||||
)
|
||||
);
|
||||
|
||||
const licenseInfo = <div className="dialog-content-part">{licenseNoticeLink}</div>;
|
||||
|
||||
const clickToStartMessage = (
|
||||
<div className="dialog-content-part">
|
||||
<div>
|
||||
{messageBuilderState.getMessage(__filename, "click_to_start")}
|
||||
</div>
|
||||
<div>{messageBuilderState.getMessage(__filename, "click_to_start")}</div>
|
||||
</div>
|
||||
)
|
||||
const edition = appGuiSettingState.edition
|
||||
);
|
||||
|
||||
const edition = appGuiSettingState.edition;
|
||||
const content = (
|
||||
<div className="body-row">
|
||||
{donationMessage}
|
||||
{edition.indexOf("onnxdirectML-cuda") >= 0 ? directMLMessage : <></>}
|
||||
{licenseInfo}
|
||||
{clickToStartMessage}
|
||||
</div>
|
||||
)
|
||||
);
|
||||
|
||||
return (
|
||||
<div className="dialog-frame">
|
||||
@ -105,5 +122,4 @@ export const StartingNoticeDialog = () => {
|
||||
);
|
||||
}, [appGuiSettingState.edition]);
|
||||
return dialog;
|
||||
|
||||
};
|
||||
|
@ -1,19 +1,22 @@
|
||||
import React from "react";
|
||||
import { useGuiState } from "./001_GuiStateProvider";
|
||||
import { TextInputDialog } from "./911_TextInputDialog";
|
||||
import { ShowLicenseDialog } from "./912_ShowLicenseDialog";
|
||||
|
||||
export const Dialogs2 = () => {
|
||||
const guiState = useGuiState()
|
||||
const guiState = useGuiState();
|
||||
const dialogs = (
|
||||
<div>
|
||||
{guiState.stateControls.showTextInputCheckbox.trigger}
|
||||
{guiState.stateControls.showLicenseCheckbox.trigger}
|
||||
<div className="dialog-container2" id="dialog2">
|
||||
{guiState.stateControls.showTextInputCheckbox.trigger}
|
||||
<TextInputDialog></TextInputDialog>
|
||||
{guiState.stateControls.showLicenseCheckbox.trigger}
|
||||
<ShowLicenseDialog />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
);
|
||||
|
||||
return dialogs
|
||||
}
|
||||
return dialogs;
|
||||
};
|
||||
|
76
client/demo/src/components/demo/912_ShowLicenseDialog.tsx
Normal file
76
client/demo/src/components/demo/912_ShowLicenseDialog.tsx
Normal file
@ -0,0 +1,76 @@
|
||||
////// Currently not used /////////
|
||||
|
||||
import React, { useMemo } from "react";
|
||||
import { useGuiState } from "./001_GuiStateProvider";
|
||||
import { isDesktopApp } from "../../const";
|
||||
import { useMessageBuilder } from "../../hooks/useMessageBuilder";
|
||||
|
||||
export const ShowLicenseDialog = () => {
|
||||
const guiState = useGuiState();
|
||||
|
||||
const messageBuilderState = useMessageBuilder();
|
||||
useMemo(() => {
|
||||
messageBuilderState.setMessage(__filename, "nsf_hifigan1", {
|
||||
ja: "Diffusion SVC, DDSP SVCはvocodeerはDiffSinger Community Vocodersを使用しています。次のリンクからライセンスをご確認ください。",
|
||||
en: "Diffusion SVC and DDSP SVC uses DiffSinger Community Vocoders. Please check the license from the following link.",
|
||||
});
|
||||
messageBuilderState.setMessage(__filename, "nsf_hifigan2", { ja: "別のモデルを使用する場合はpretrain\\nsf_hifiganに設置してください。", en: "Please place it on pretrain\\nsf_hifigan if you are using a different model." });
|
||||
}, []);
|
||||
|
||||
const hifiGanLink = useMemo(() => {
|
||||
return isDesktopApp() ? (
|
||||
// @ts-ignore
|
||||
<span
|
||||
className="link"
|
||||
onClick={() => {
|
||||
// @ts-ignore
|
||||
window.electronAPI.openBrowser("https://openvpi.github.io/vocoders/");
|
||||
}}
|
||||
>
|
||||
license
|
||||
</span>
|
||||
) : (
|
||||
<a className="link" href="https://openvpi.github.io/vocoders/" target="_blank" rel="noopener noreferrer">
|
||||
license
|
||||
</a>
|
||||
);
|
||||
}, []);
|
||||
|
||||
const dialog = useMemo(() => {
|
||||
const hifiganMessage = (
|
||||
<div className="dialog-content-part">
|
||||
<div>{messageBuilderState.getMessage(__filename, "nsf_hifigan1")}</div>
|
||||
<div>{messageBuilderState.getMessage(__filename, "nsf_hifigan2")}</div>
|
||||
<div>{hifiGanLink}</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
const buttonsRow = (
|
||||
<div className="body-row split-3-4-3 left-padding-1">
|
||||
<div className="body-item-text"></div>
|
||||
<div className="body-button-container body-button-container-space-around">
|
||||
<div
|
||||
className="body-button"
|
||||
onClick={() => {
|
||||
guiState.stateControls.showLicenseCheckbox.updateState(false);
|
||||
}}
|
||||
>
|
||||
close
|
||||
</div>
|
||||
</div>
|
||||
<div className="body-item-text"></div>
|
||||
</div>
|
||||
);
|
||||
|
||||
return (
|
||||
<div className="dialog-frame">
|
||||
<div className="dialog-title">Input Dialog</div>
|
||||
<div className="dialog-content">
|
||||
<div className="body-row">{hifiganMessage}</div>
|
||||
{buttonsRow}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}, [guiState.textInputResolve]);
|
||||
return dialog;
|
||||
};
|
Loading…
Reference in New Issue
Block a user