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 OpenGetClientInformationDialogCheckbox = "open-get-client-information-dialog-checkbox";
|
||||||
|
|
||||||
export const OpenTextInputDialogCheckbox = "open-text-input-dialog-checkbox";
|
export const OpenTextInputDialogCheckbox = "open-text-input-dialog-checkbox";
|
||||||
|
export const OpenShowLicenseDialogCheckbox = "open-show-license-dialog-checkbox";
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
};
|
};
|
||||||
@ -45,6 +47,7 @@ export type StateControls = {
|
|||||||
showGetServerInformationCheckbox: StateControlCheckbox;
|
showGetServerInformationCheckbox: StateControlCheckbox;
|
||||||
showGetClientInformationCheckbox: StateControlCheckbox;
|
showGetClientInformationCheckbox: StateControlCheckbox;
|
||||||
showTextInputCheckbox: StateControlCheckbox;
|
showTextInputCheckbox: StateControlCheckbox;
|
||||||
|
showLicenseCheckbox: StateControlCheckbox;
|
||||||
};
|
};
|
||||||
|
|
||||||
type GuiStateAndMethod = {
|
type GuiStateAndMethod = {
|
||||||
@ -181,6 +184,7 @@ export const GuiStateProvider = ({ children }: Props) => {
|
|||||||
const showGetClientInformationCheckbox = useStateControlCheckbox(OpenGetClientInformationDialogCheckbox);
|
const showGetClientInformationCheckbox = useStateControlCheckbox(OpenGetClientInformationDialogCheckbox);
|
||||||
|
|
||||||
const showTextInputCheckbox = useStateControlCheckbox(OpenTextInputDialogCheckbox);
|
const showTextInputCheckbox = useStateControlCheckbox(OpenTextInputDialogCheckbox);
|
||||||
|
const showLicenseCheckbox = useStateControlCheckbox(OpenShowLicenseDialogCheckbox);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
openServerControlCheckbox.updateState(true);
|
openServerControlCheckbox.updateState(true);
|
||||||
@ -202,6 +206,7 @@ export const GuiStateProvider = ({ children }: Props) => {
|
|||||||
showGetClientInformationCheckbox.updateState(false);
|
showGetClientInformationCheckbox.updateState(false);
|
||||||
|
|
||||||
showTextInputCheckbox.updateState(false);
|
showTextInputCheckbox.updateState(false);
|
||||||
|
showLicenseCheckbox.updateState(false);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -241,6 +246,7 @@ export const GuiStateProvider = ({ children }: Props) => {
|
|||||||
showGetClientInformationCheckbox,
|
showGetClientInformationCheckbox,
|
||||||
|
|
||||||
showTextInputCheckbox,
|
showTextInputCheckbox,
|
||||||
|
showLicenseCheckbox,
|
||||||
},
|
},
|
||||||
isConverting,
|
isConverting,
|
||||||
setIsConverting,
|
setIsConverting,
|
||||||
|
@ -4,95 +4,112 @@ import { isDesktopApp } from "../../const";
|
|||||||
import { useAppRoot } from "../../001_provider/001_AppRootProvider";
|
import { useAppRoot } from "../../001_provider/001_AppRootProvider";
|
||||||
import { useMessageBuilder } from "../../hooks/useMessageBuilder";
|
import { useMessageBuilder } from "../../hooks/useMessageBuilder";
|
||||||
|
|
||||||
|
|
||||||
export const StartingNoticeDialog = () => {
|
export const StartingNoticeDialog = () => {
|
||||||
const guiState = useGuiState()
|
const guiState = useGuiState();
|
||||||
const { appGuiSettingState } = useAppRoot()
|
const { appGuiSettingState } = useAppRoot();
|
||||||
|
|
||||||
const messageBuilderState = useMessageBuilder()
|
const messageBuilderState = useMessageBuilder();
|
||||||
useMemo(() => {
|
useMemo(() => {
|
||||||
messageBuilderState.setMessage(__filename, "support", { "ja": "支援", "en": "Donation" })
|
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_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, "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, "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(() => {
|
const coffeeLink = useMemo(() => {
|
||||||
return isDesktopApp() ?
|
return isDesktopApp() ? (
|
||||||
(
|
// @ts-ignore
|
||||||
// @ts-ignore
|
<span
|
||||||
<span className="link" onClick={() => { window.electronAPI.openBrowser("https://www.buymeacoffee.com/wokad") }}>
|
className="link"
|
||||||
<img className="donate-img" src="./assets/buymeacoffee.png" /> {messageBuilderState.getMessage(__filename, "support_message_2")}
|
onClick={() => {
|
||||||
</span>
|
// @ts-ignore
|
||||||
)
|
window.electronAPI.openBrowser("https://www.buymeacoffee.com/wokad");
|
||||||
:
|
}}
|
||||||
(
|
>
|
||||||
<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")}
|
||||||
<img className="donate-img" src="./assets/buymeacoffee.png" /> {messageBuilderState.getMessage(__filename, "support_message_2")}
|
</span>
|
||||||
</a>
|
) : (
|
||||||
)
|
<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 dialog = useMemo(() => {
|
||||||
const closeButtonRow = (
|
const closeButtonRow = (
|
||||||
<div className="body-row split-3-4-3 left-padding-1">
|
<div className="body-row split-3-4-3 left-padding-1">
|
||||||
<div className="body-item-text">
|
<div className="body-item-text"></div>
|
||||||
</div>
|
|
||||||
<div className="body-button-container body-button-container-space-around">
|
<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")}
|
{messageBuilderState.getMessage(__filename, "start")}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="body-item-text"></div>
|
<div className="body-item-text"></div>
|
||||||
</div>
|
</div>
|
||||||
)
|
);
|
||||||
|
|
||||||
const donationMessage = (
|
const donationMessage = (
|
||||||
<div className="dialog-content-part">
|
<div className="dialog-content-part">
|
||||||
<div>
|
<div>{messageBuilderState.getMessage(__filename, "support_message_1")}</div>
|
||||||
{messageBuilderState.getMessage(__filename, "support_message_1")}
|
<div>{coffeeLink}</div>
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
{coffeeLink}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
)
|
);
|
||||||
|
|
||||||
const directMLMessage = (
|
const directMLMessage = (
|
||||||
<div className="dialog-content-part">
|
<div className="dialog-content-part">
|
||||||
<div>
|
<div>{messageBuilderState.getMessage(__filename, "directml_1")}</div>
|
||||||
{messageBuilderState.getMessage(__filename, "directml_1")}
|
<div className="left-padding-1">{messageBuilderState.getMessage(__filename, "directml_2")}</div>
|
||||||
</div>
|
|
||||||
<div className="left-padding-1">
|
|
||||||
{messageBuilderState.getMessage(__filename, "directml_2")}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
)
|
);
|
||||||
|
|
||||||
|
const licenseInfo = <div className="dialog-content-part">{licenseNoticeLink}</div>;
|
||||||
|
|
||||||
const clickToStartMessage = (
|
const clickToStartMessage = (
|
||||||
<div className="dialog-content-part">
|
<div className="dialog-content-part">
|
||||||
<div>
|
<div>{messageBuilderState.getMessage(__filename, "click_to_start")}</div>
|
||||||
{messageBuilderState.getMessage(__filename, "click_to_start")}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
)
|
);
|
||||||
const edition = appGuiSettingState.edition
|
|
||||||
|
const edition = appGuiSettingState.edition;
|
||||||
const content = (
|
const content = (
|
||||||
<div className="body-row">
|
<div className="body-row">
|
||||||
{donationMessage}
|
{donationMessage}
|
||||||
{edition.indexOf("onnxdirectML-cuda") >= 0 ? directMLMessage : <></>}
|
{edition.indexOf("onnxdirectML-cuda") >= 0 ? directMLMessage : <></>}
|
||||||
|
{licenseInfo}
|
||||||
{clickToStartMessage}
|
{clickToStartMessage}
|
||||||
</div>
|
</div>
|
||||||
)
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="dialog-frame">
|
<div className="dialog-frame">
|
||||||
@ -105,5 +122,4 @@ export const StartingNoticeDialog = () => {
|
|||||||
);
|
);
|
||||||
}, [appGuiSettingState.edition]);
|
}, [appGuiSettingState.edition]);
|
||||||
return dialog;
|
return dialog;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -1,19 +1,22 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { useGuiState } from "./001_GuiStateProvider";
|
import { useGuiState } from "./001_GuiStateProvider";
|
||||||
import { TextInputDialog } from "./911_TextInputDialog";
|
import { TextInputDialog } from "./911_TextInputDialog";
|
||||||
|
import { ShowLicenseDialog } from "./912_ShowLicenseDialog";
|
||||||
|
|
||||||
export const Dialogs2 = () => {
|
export const Dialogs2 = () => {
|
||||||
const guiState = useGuiState()
|
const guiState = useGuiState();
|
||||||
const dialogs = (
|
const dialogs = (
|
||||||
<div>
|
<div>
|
||||||
{guiState.stateControls.showTextInputCheckbox.trigger}
|
{guiState.stateControls.showTextInputCheckbox.trigger}
|
||||||
|
{guiState.stateControls.showLicenseCheckbox.trigger}
|
||||||
<div className="dialog-container2" id="dialog2">
|
<div className="dialog-container2" id="dialog2">
|
||||||
{guiState.stateControls.showTextInputCheckbox.trigger}
|
{guiState.stateControls.showTextInputCheckbox.trigger}
|
||||||
<TextInputDialog></TextInputDialog>
|
<TextInputDialog></TextInputDialog>
|
||||||
|
{guiState.stateControls.showLicenseCheckbox.trigger}
|
||||||
|
<ShowLicenseDialog />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</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