From 0f978c0dc4b0303b49e0c4827c1739798f028820 Mon Sep 17 00:00:00 2001 From: BFlat Date: Sat, 30 Sep 2023 09:02:12 +0700 Subject: [PATCH 1/3] Face Animation links added to navbar and footer --- packages/fakeyou.com/public/locales/bn/Footer.json | 1 + packages/fakeyou.com/public/locales/bn/TopNav.json | 1 + packages/fakeyou.com/public/locales/de/Footer.json | 1 + packages/fakeyou.com/public/locales/de/TopNav.json | 1 + packages/fakeyou.com/public/locales/en/Footer.json | 1 + packages/fakeyou.com/public/locales/en/TopNav.json | 1 + packages/fakeyou.com/public/locales/es/Footer.json | 1 + packages/fakeyou.com/public/locales/es/TopNav.json | 1 + packages/fakeyou.com/public/locales/fr/Footer.json | 1 + packages/fakeyou.com/public/locales/fr/TopNav.json | 1 + packages/fakeyou.com/public/locales/hi/Footer.json | 1 + packages/fakeyou.com/public/locales/hi/TopNav.json | 1 + packages/fakeyou.com/public/locales/id/Footer.json | 1 + packages/fakeyou.com/public/locales/id/TopNav.json | 1 + packages/fakeyou.com/public/locales/it/Footer.json | 1 + packages/fakeyou.com/public/locales/it/TopNav.json | 1 + packages/fakeyou.com/public/locales/ja/Footer.json | 1 + packages/fakeyou.com/public/locales/ja/TopNav.json | 1 + packages/fakeyou.com/public/locales/ko/Footer.json | 1 + packages/fakeyou.com/public/locales/ko/TopNav.json | 1 + packages/fakeyou.com/public/locales/pt/Footer.json | 1 + packages/fakeyou.com/public/locales/pt/TopNav.json | 1 + packages/fakeyou.com/public/locales/ru/Footer.json | 1 + packages/fakeyou.com/public/locales/ru/TopNav.json | 1 + packages/fakeyou.com/public/locales/th/Footer.json | 1 + packages/fakeyou.com/public/locales/th/TopNav.json | 1 + packages/fakeyou.com/public/locales/tr/Footer.json | 1 + packages/fakeyou.com/public/locales/tr/TopNav.json | 1 + packages/fakeyou.com/public/locales/vi/Footer.json | 1 + packages/fakeyou.com/public/locales/vi/TopNav.json | 1 + .../fakeyou.com/public/locales/zh-Hans/Footer.json | 1 + .../fakeyou.com/public/locales/zh-Hans/TopNav.json | 1 + packages/fakeyou.com/src/v2/view/nav/FooterNav.tsx | 6 +++++- packages/fakeyou.com/src/v2/view/nav/TopNav.tsx | 10 ++++++++++ 34 files changed, 47 insertions(+), 1 deletion(-) diff --git a/packages/fakeyou.com/public/locales/bn/Footer.json b/packages/fakeyou.com/public/locales/bn/Footer.json index 7376842547..6e54bf50f8 100644 --- a/packages/fakeyou.com/public/locales/bn/Footer.json +++ b/packages/fakeyou.com/public/locales/bn/Footer.json @@ -9,6 +9,7 @@ "infoPrivacyPolicy": "গোপনীয়তা নীতি", "infoTerms": "ব্যবহারের শর্তাবলী", "infoTitle": "তথ্য", + "productFaceAnimator": "ফেস অ্যানিমেটর", "productTts": "টেক্সট টু স্পিচ", "productUploadModels": "আপলোড মডেল", "productVc": "ভয়েস টু ভয়েস", diff --git a/packages/fakeyou.com/public/locales/bn/TopNav.json b/packages/fakeyou.com/public/locales/bn/TopNav.json index e97cefbc87..094793cef7 100644 --- a/packages/fakeyou.com/public/locales/bn/TopNav.json +++ b/packages/fakeyou.com/public/locales/bn/TopNav.json @@ -12,6 +12,7 @@ "infoTerms": "ব্যবহারের শর্তাবলী", "infoTitle": "তথ্য", "pricingTitle": "মূল্য নির্ধারণ", + "productFaceAnimator": "ফেস অ্যানিমেটর", "productTts": "টেক্সট টু স্পিচ", "productUploadModels": "আপলোড মডেল", "productVc": "ভয়েস টু ভয়েস", diff --git a/packages/fakeyou.com/public/locales/de/Footer.json b/packages/fakeyou.com/public/locales/de/Footer.json index a526b6e4be..221f996097 100644 --- a/packages/fakeyou.com/public/locales/de/Footer.json +++ b/packages/fakeyou.com/public/locales/de/Footer.json @@ -9,6 +9,7 @@ "infoPrivacyPolicy": "Datenschutzrichtlinie", "infoTerms": "Nutzungsbedingungen", "infoTitle": "Die Info", + "productFaceAnimator": "Gesichtsanimator", "productTts": "Text zu Sprache", "productUploadModels": "Modelle hochladen", "productVc": "Stimme zu Stimme", diff --git a/packages/fakeyou.com/public/locales/de/TopNav.json b/packages/fakeyou.com/public/locales/de/TopNav.json index ce126a8fd4..c1ed066e4f 100644 --- a/packages/fakeyou.com/public/locales/de/TopNav.json +++ b/packages/fakeyou.com/public/locales/de/TopNav.json @@ -12,6 +12,7 @@ "infoTerms": "Nutzungsbedingungen", "infoTitle": "Die Info", "pricingTitle": "Preisgestaltung", + "productFaceAnimator": "Gesichtsanimator", "productTts": "Text zu Sprache", "productUploadModels": "Modelle hochladen", "productVc": "Stimme zu Stimme", diff --git a/packages/fakeyou.com/public/locales/en/Footer.json b/packages/fakeyou.com/public/locales/en/Footer.json index 102339e70b..8fac7fa6bc 100644 --- a/packages/fakeyou.com/public/locales/en/Footer.json +++ b/packages/fakeyou.com/public/locales/en/Footer.json @@ -10,6 +10,7 @@ "infoPrivacyPolicy": "Privacy Policy", "infoTerms": "Terms of Use", "infoTitle": "Info", + "productFaceAnimator": "Face Animator", "productTts": "Text to Speech", "productUploadModels": "Upload Models", "productVc": "Voice to Voice", diff --git a/packages/fakeyou.com/public/locales/en/TopNav.json b/packages/fakeyou.com/public/locales/en/TopNav.json index 9ec7f8664c..980ff3c0ee 100644 --- a/packages/fakeyou.com/public/locales/en/TopNav.json +++ b/packages/fakeyou.com/public/locales/en/TopNav.json @@ -13,6 +13,7 @@ "infoTerms": "Terms of Use", "infoTitle": "Info", "pricingTitle": "Pricing", + "productFaceAnimator": "Face Animator", "productTts": "Text to Speech", "productUploadModels": "Upload Models", "productVc": "Voice to Voice", diff --git a/packages/fakeyou.com/public/locales/es/Footer.json b/packages/fakeyou.com/public/locales/es/Footer.json index a3f65ecd79..11056e5454 100644 --- a/packages/fakeyou.com/public/locales/es/Footer.json +++ b/packages/fakeyou.com/public/locales/es/Footer.json @@ -9,6 +9,7 @@ "infoPrivacyPolicy": "política de privacidad", "infoTerms": "Condiciones de uso", "infoTitle": "Información", + "productFaceAnimator": "Animador de rostros", "productTts": "Texto a voz", "productUploadModels": "Subir modelos", "productVc": "Voz a Voz", diff --git a/packages/fakeyou.com/public/locales/es/TopNav.json b/packages/fakeyou.com/public/locales/es/TopNav.json index c94f4c287c..426b7624b6 100644 --- a/packages/fakeyou.com/public/locales/es/TopNav.json +++ b/packages/fakeyou.com/public/locales/es/TopNav.json @@ -12,6 +12,7 @@ "infoTerms": "Condiciones de uso", "infoTitle": "Información", "pricingTitle": "Precios", + "productFaceAnimator": "Animador de rostros", "productTts": "Texto a voz", "productUploadModels": "Subir modelos", "productVc": "Voz a Voz", diff --git a/packages/fakeyou.com/public/locales/fr/Footer.json b/packages/fakeyou.com/public/locales/fr/Footer.json index 40ef1858a7..9d0cda9552 100644 --- a/packages/fakeyou.com/public/locales/fr/Footer.json +++ b/packages/fakeyou.com/public/locales/fr/Footer.json @@ -9,6 +9,7 @@ "infoPrivacyPolicy": "politique de confidentialité", "infoTerms": "Conditions d'utilisation", "infoTitle": "Info", + "productFaceAnimator": "Animateur de visage", "productTts": "Texte pour parler", "productUploadModels": "Télécharger des modèles", "productVc": "Voix à voix", diff --git a/packages/fakeyou.com/public/locales/fr/TopNav.json b/packages/fakeyou.com/public/locales/fr/TopNav.json index dd3ac2e01a..630623a3d8 100644 --- a/packages/fakeyou.com/public/locales/fr/TopNav.json +++ b/packages/fakeyou.com/public/locales/fr/TopNav.json @@ -12,6 +12,7 @@ "infoTerms": "Conditions d'utilisation", "infoTitle": "Info", "pricingTitle": "Tarifs", + "productFaceAnimator": "Animateur de visage", "productTts": "Texte pour parler", "productUploadModels": "Télécharger des modèles", "productVc": "Voix à voix", diff --git a/packages/fakeyou.com/public/locales/hi/Footer.json b/packages/fakeyou.com/public/locales/hi/Footer.json index 7241087257..8761ac8b09 100644 --- a/packages/fakeyou.com/public/locales/hi/Footer.json +++ b/packages/fakeyou.com/public/locales/hi/Footer.json @@ -9,6 +9,7 @@ "infoPrivacyPolicy": "गोपनीयता नीति", "infoTerms": "उपयोग की शर्तें", "infoTitle": "जानकारी", + "productFaceAnimator": "फेस एनिमेटर", "productTts": "भाषण के पाठ", "productUploadModels": "मॉडल अपलोड करें", "productVc": "आवाज से आवाज", diff --git a/packages/fakeyou.com/public/locales/hi/TopNav.json b/packages/fakeyou.com/public/locales/hi/TopNav.json index 19a905e345..d964430e53 100644 --- a/packages/fakeyou.com/public/locales/hi/TopNav.json +++ b/packages/fakeyou.com/public/locales/hi/TopNav.json @@ -12,6 +12,7 @@ "infoTerms": "उपयोग की शर्तें", "infoTitle": "जानकारी", "pricingTitle": "मूल्य निर्धारण", + "productFaceAnimator": "फेस एनिमेटर", "productTts": "भाषण के पाठ", "productUploadModels": "मॉडल अपलोड करें", "productVc": "आवाज से आवाज", diff --git a/packages/fakeyou.com/public/locales/id/Footer.json b/packages/fakeyou.com/public/locales/id/Footer.json index edf1d67743..d0ba01fff9 100644 --- a/packages/fakeyou.com/public/locales/id/Footer.json +++ b/packages/fakeyou.com/public/locales/id/Footer.json @@ -9,6 +9,7 @@ "infoPrivacyPolicy": "Kebijakan pribadi", "infoTerms": "Syarat Penggunaan", "infoTitle": "Informasi", + "productFaceAnimator": "Animator Wajah", "productTts": "Teks pidato", "productUploadModels": "Unggah Model", "productVc": "Suara ke Suara", diff --git a/packages/fakeyou.com/public/locales/id/TopNav.json b/packages/fakeyou.com/public/locales/id/TopNav.json index ced5cb43fc..d5801c85a8 100644 --- a/packages/fakeyou.com/public/locales/id/TopNav.json +++ b/packages/fakeyou.com/public/locales/id/TopNav.json @@ -12,6 +12,7 @@ "infoTerms": "Syarat Penggunaan", "infoTitle": "Informasi", "pricingTitle": "Harga", + "productFaceAnimator": "Animator Wajah", "productTts": "Teks pidato", "productUploadModels": "Unggah Model", "productVc": "Suara ke Suara", diff --git a/packages/fakeyou.com/public/locales/it/Footer.json b/packages/fakeyou.com/public/locales/it/Footer.json index 70b6e19632..0ef35b33f0 100644 --- a/packages/fakeyou.com/public/locales/it/Footer.json +++ b/packages/fakeyou.com/public/locales/it/Footer.json @@ -9,6 +9,7 @@ "infoPrivacyPolicy": "politica sulla riservatezza", "infoTerms": "Termini di utilizzo", "infoTitle": "Informazioni", + "productFaceAnimator": "Animatore di volti", "productTts": "Sintesi vocale da testo", "productUploadModels": "Carica modelli", "productVc": "Da voce a voce", diff --git a/packages/fakeyou.com/public/locales/it/TopNav.json b/packages/fakeyou.com/public/locales/it/TopNav.json index 23a8735eb7..1af9e6d454 100644 --- a/packages/fakeyou.com/public/locales/it/TopNav.json +++ b/packages/fakeyou.com/public/locales/it/TopNav.json @@ -12,6 +12,7 @@ "infoTerms": "Termini di utilizzo", "infoTitle": "Informazioni", "pricingTitle": "Prezzi", + "productFaceAnimator": "Animatore di volti", "productTts": "Sintesi vocale da testo", "productUploadModels": "Carica modelli", "productVc": "Da voce a voce", diff --git a/packages/fakeyou.com/public/locales/ja/Footer.json b/packages/fakeyou.com/public/locales/ja/Footer.json index b993e963d7..344b1f8541 100644 --- a/packages/fakeyou.com/public/locales/ja/Footer.json +++ b/packages/fakeyou.com/public/locales/ja/Footer.json @@ -9,6 +9,7 @@ "infoPrivacyPolicy": "プライバシーポリシー", "infoTerms": "利用規約", "infoTitle": "情報", + "productFaceAnimator": "フェイスアニメーター", "productTts": "テキスト読み上げ", "productUploadModels": "モデルのアップロード", "productVc": "声から声へ", diff --git a/packages/fakeyou.com/public/locales/ja/TopNav.json b/packages/fakeyou.com/public/locales/ja/TopNav.json index bb32abbf96..b02cef7cc7 100644 --- a/packages/fakeyou.com/public/locales/ja/TopNav.json +++ b/packages/fakeyou.com/public/locales/ja/TopNav.json @@ -12,6 +12,7 @@ "infoTerms": "利用規約", "infoTitle": "情報", "pricingTitle": "価格設定", + "productFaceAnimator": "フェイスアニメーター", "productTts": "テキスト読み上げ", "productUploadModels": "モデルのアップロード", "productVc": "声から声へ", diff --git a/packages/fakeyou.com/public/locales/ko/Footer.json b/packages/fakeyou.com/public/locales/ko/Footer.json index 2de52b6811..48d5b44ce5 100644 --- a/packages/fakeyou.com/public/locales/ko/Footer.json +++ b/packages/fakeyou.com/public/locales/ko/Footer.json @@ -9,6 +9,7 @@ "infoPrivacyPolicy": "개인 정보 정책", "infoTerms": "이용약관", "infoTitle": "정보", + "productFaceAnimator": "얼굴 애니메이터", "productTts": "텍스트 음성 변환", "productUploadModels": "모델 업로드", "productVc": "음성 대 음성", diff --git a/packages/fakeyou.com/public/locales/ko/TopNav.json b/packages/fakeyou.com/public/locales/ko/TopNav.json index 56078380c1..2a4ec6d355 100644 --- a/packages/fakeyou.com/public/locales/ko/TopNav.json +++ b/packages/fakeyou.com/public/locales/ko/TopNav.json @@ -12,6 +12,7 @@ "infoTerms": "이용약관", "infoTitle": "정보", "pricingTitle": "가격", + "productFaceAnimator": "얼굴 애니메이터", "productTts": "텍스트 음성 변환", "productUploadModels": "모델 업로드", "productVc": "음성 대 음성", diff --git a/packages/fakeyou.com/public/locales/pt/Footer.json b/packages/fakeyou.com/public/locales/pt/Footer.json index cdd8182e69..fdfd55647c 100644 --- a/packages/fakeyou.com/public/locales/pt/Footer.json +++ b/packages/fakeyou.com/public/locales/pt/Footer.json @@ -9,6 +9,7 @@ "infoPrivacyPolicy": "política de Privacidade", "infoTerms": "Termos de uso", "infoTitle": "Informações", + "productFaceAnimator": "Animador facial", "productTts": "Texto para fala", "productUploadModels": "Carregar modelos", "productVc": "Voz para Voz", diff --git a/packages/fakeyou.com/public/locales/pt/TopNav.json b/packages/fakeyou.com/public/locales/pt/TopNav.json index 48af9b9906..5db344be99 100644 --- a/packages/fakeyou.com/public/locales/pt/TopNav.json +++ b/packages/fakeyou.com/public/locales/pt/TopNav.json @@ -12,6 +12,7 @@ "infoTerms": "Termos de uso", "infoTitle": "Informações", "pricingTitle": "Preços", + "productFaceAnimator": "Animador facial", "productTts": "Texto para fala", "productUploadModels": "Carregar modelos", "productVc": "Voz para Voz", diff --git a/packages/fakeyou.com/public/locales/ru/Footer.json b/packages/fakeyou.com/public/locales/ru/Footer.json index 7c713967da..409fce1b50 100644 --- a/packages/fakeyou.com/public/locales/ru/Footer.json +++ b/packages/fakeyou.com/public/locales/ru/Footer.json @@ -9,6 +9,7 @@ "infoPrivacyPolicy": "политика конфиденциальности", "infoTerms": "Условия эксплуатации", "infoTitle": "Информация", + "productFaceAnimator": "Лицевой Аниматор", "productTts": "Текст в речь", "productUploadModels": "Загрузить модели", "productVc": "Голос в голос", diff --git a/packages/fakeyou.com/public/locales/ru/TopNav.json b/packages/fakeyou.com/public/locales/ru/TopNav.json index e7eee54c5a..db1b3ece83 100644 --- a/packages/fakeyou.com/public/locales/ru/TopNav.json +++ b/packages/fakeyou.com/public/locales/ru/TopNav.json @@ -12,6 +12,7 @@ "infoTerms": "Условия эксплуатации", "infoTitle": "Информация", "pricingTitle": "Цены", + "productFaceAnimator": "Лицевой Аниматор", "productTts": "Текст в речь", "productUploadModels": "Загрузить модели", "productVc": "Голос в голос", diff --git a/packages/fakeyou.com/public/locales/th/Footer.json b/packages/fakeyou.com/public/locales/th/Footer.json index ac3771f616..79c6f606b9 100644 --- a/packages/fakeyou.com/public/locales/th/Footer.json +++ b/packages/fakeyou.com/public/locales/th/Footer.json @@ -9,6 +9,7 @@ "infoPrivacyPolicy": "นโยบายความเป็นส่วนตัว", "infoTerms": "ข้อกำหนดการใช้งาน", "infoTitle": "ข้อมูล", + "productFaceAnimator": "แอนิเมชั่นใบหน้า", "productTts": "ข้อความเป็นคำพูด", "productUploadModels": "อัพโหลดโมเดล", "productVc": "เสียงเป็นเสียง", diff --git a/packages/fakeyou.com/public/locales/th/TopNav.json b/packages/fakeyou.com/public/locales/th/TopNav.json index bcd1b6a380..abd29bb124 100644 --- a/packages/fakeyou.com/public/locales/th/TopNav.json +++ b/packages/fakeyou.com/public/locales/th/TopNav.json @@ -12,6 +12,7 @@ "infoTerms": "ข้อกำหนดการใช้งาน", "infoTitle": "ข้อมูล", "pricingTitle": "ราคา", + "productFaceAnimator": "แอนิเมชั่นใบหน้า", "productTts": "ข้อความเป็นคำพูด", "productUploadModels": "อัพโหลดโมเดล", "productVc": "เสียงเป็นเสียง", diff --git a/packages/fakeyou.com/public/locales/tr/Footer.json b/packages/fakeyou.com/public/locales/tr/Footer.json index f6301fda53..f252302181 100644 --- a/packages/fakeyou.com/public/locales/tr/Footer.json +++ b/packages/fakeyou.com/public/locales/tr/Footer.json @@ -9,6 +9,7 @@ "infoPrivacyPolicy": "Gizlilik Politikası", "infoTerms": "Kullanım Şartları", "infoTitle": "Bilgi", + "productFaceAnimator": "Yüz Animatörü", "productTts": "Konuşma metni", "productUploadModels": "Modelleri Yükle", "productVc": "Sesten Sese", diff --git a/packages/fakeyou.com/public/locales/tr/TopNav.json b/packages/fakeyou.com/public/locales/tr/TopNav.json index f371581085..c72fa84b59 100644 --- a/packages/fakeyou.com/public/locales/tr/TopNav.json +++ b/packages/fakeyou.com/public/locales/tr/TopNav.json @@ -12,6 +12,7 @@ "infoTerms": "Kullanım Şartları", "infoTitle": "Bilgi", "pricingTitle": "Fiyatlandırma", + "productFaceAnimator": "Yüz Animatörü", "productTts": "Konuşma metni", "productUploadModels": "Modelleri Yükle", "productVc": "Sesten Sese", diff --git a/packages/fakeyou.com/public/locales/vi/Footer.json b/packages/fakeyou.com/public/locales/vi/Footer.json index 9eb2909a26..1924e61748 100644 --- a/packages/fakeyou.com/public/locales/vi/Footer.json +++ b/packages/fakeyou.com/public/locales/vi/Footer.json @@ -9,6 +9,7 @@ "infoPrivacyPolicy": "Chính sách bảo mật", "infoTerms": "Điều khoản sử dụng", "infoTitle": "Thông tin", + "productFaceAnimator": "khuôn mặt hoạt hình", "productTts": "Chuyển văn bản thành giọng nói", "productUploadModels": "Tải lên mô hình", "productVc": "Giọng nói thành giọng nói", diff --git a/packages/fakeyou.com/public/locales/vi/TopNav.json b/packages/fakeyou.com/public/locales/vi/TopNav.json index 7ad99856e5..25eadf12d1 100644 --- a/packages/fakeyou.com/public/locales/vi/TopNav.json +++ b/packages/fakeyou.com/public/locales/vi/TopNav.json @@ -12,6 +12,7 @@ "infoTerms": "Điều khoản sử dụng", "infoTitle": "Thông tin", "pricingTitle": "Định giá", + "productFaceAnimator": "khuôn mặt hoạt hình", "productTts": "Chuyển văn bản thành giọng nói", "productUploadModels": "Tải lên mô hình", "productVc": "Giọng nói thành giọng nói", diff --git a/packages/fakeyou.com/public/locales/zh-Hans/Footer.json b/packages/fakeyou.com/public/locales/zh-Hans/Footer.json index bd1c5a7ae5..52a9de7bf0 100644 --- a/packages/fakeyou.com/public/locales/zh-Hans/Footer.json +++ b/packages/fakeyou.com/public/locales/zh-Hans/Footer.json @@ -9,6 +9,7 @@ "infoPrivacyPolicy": "隐私政策", "infoTerms": "使用条款", "infoTitle": "信息", + "productFaceAnimator": "脸部动画师", "productTts": "文字转语音", "productUploadModels": "上传模型", "productVc": "语音到语音", diff --git a/packages/fakeyou.com/public/locales/zh-Hans/TopNav.json b/packages/fakeyou.com/public/locales/zh-Hans/TopNav.json index d7f5021288..0499a9baa7 100644 --- a/packages/fakeyou.com/public/locales/zh-Hans/TopNav.json +++ b/packages/fakeyou.com/public/locales/zh-Hans/TopNav.json @@ -12,6 +12,7 @@ "infoTerms": "使用条款", "infoTitle": "信息", "pricingTitle": "价钱", + "productFaceAnimator": "脸部动画师", "productTts": "文字转语音", "productUploadModels": "上传模型", "productVc": "语音到语音", diff --git a/packages/fakeyou.com/src/v2/view/nav/FooterNav.tsx b/packages/fakeyou.com/src/v2/view/nav/FooterNav.tsx index 2ecb293a54..2fc2582885 100644 --- a/packages/fakeyou.com/src/v2/view/nav/FooterNav.tsx +++ b/packages/fakeyou.com/src/v2/view/nav/FooterNav.tsx @@ -58,7 +58,7 @@ function FooterNav(props: Props) { pending_svc_jobs: 0, pending_rvc_jobs: 0, pending_face_animation_jobs: 0, - } + }, }, legacy_tts: { pending_job_count: 0, @@ -213,6 +213,10 @@ function FooterNav(props: Props) { {t("productVc")} +
  • + {t("productFaceAnimator")} +
  • +
  • {t("productVideo")}
  • diff --git a/packages/fakeyou.com/src/v2/view/nav/TopNav.tsx b/packages/fakeyou.com/src/v2/view/nav/TopNav.tsx index c6c8abb0c8..afcc5a4399 100644 --- a/packages/fakeyou.com/src/v2/view/nav/TopNav.tsx +++ b/packages/fakeyou.com/src/v2/view/nav/TopNav.tsx @@ -27,6 +27,7 @@ import "tippy.js/animations/shift-away.css"; import { ThirdPartyLinks } from "@storyteller/components/src/constants/ThirdPartyLinks"; import { Analytics } from "../../../common/Analytics"; import { + faFaceViewfinder, faFileArrowUp, faMessageDots, faMicrophoneStand, @@ -244,6 +245,15 @@ function TopNav(props: Props) { {t("productVc")} +
  • + + + {t("productFaceAnimator")} + +
  • From f502b8cf6daf72fb4193f9880d637e67a8c0314a Mon Sep 17 00:00:00 2001 From: olivicmic Date: Fri, 29 Sep 2023 11:47:42 -0700 Subject: [PATCH 2/3] added controls to face animation image input --- .../components/common/Checkbox/Checkbox.tsx | 19 ++++ .../src/components/common/Checkbox/index.tsx | 1 + .../common/ImageInput/ImageInput.scss | 7 +- .../common/NumberSlider/NumberSlider.tsx | 16 +++ .../components/common/NumberSlider/index.ts | 1 + .../src/components/common/Radio/Radio.scss | 9 ++ .../src/components/common/Radio/Radio.tsx | 20 ++++ .../src/components/common/Radio/index.tsx | 1 + .../src/components/common/Slider/Slider.tsx | 12 ++ .../src/components/common/Slider/index.ts | 1 + .../src/components/common/index.tsx | 12 +- .../fakeyou.com/src/resources/makeClass.ts | 5 + .../LipsyncEditor/FaceAnimatorTitle.tsx | 2 + .../lipsync/LipsyncEditor/LipsyncEditor.scss | 5 + .../lipsync/LipsyncEditor/LipsyncEditor.tsx | 106 +++++++++++++----- 15 files changed, 184 insertions(+), 33 deletions(-) create mode 100644 packages/fakeyou.com/src/components/common/Checkbox/Checkbox.tsx create mode 100644 packages/fakeyou.com/src/components/common/Checkbox/index.tsx create mode 100644 packages/fakeyou.com/src/components/common/NumberSlider/NumberSlider.tsx create mode 100644 packages/fakeyou.com/src/components/common/NumberSlider/index.ts create mode 100644 packages/fakeyou.com/src/components/common/Radio/Radio.scss create mode 100644 packages/fakeyou.com/src/components/common/Radio/Radio.tsx create mode 100644 packages/fakeyou.com/src/components/common/Radio/index.tsx create mode 100644 packages/fakeyou.com/src/components/common/Slider/Slider.tsx create mode 100644 packages/fakeyou.com/src/components/common/Slider/index.ts create mode 100644 packages/fakeyou.com/src/resources/makeClass.ts diff --git a/packages/fakeyou.com/src/components/common/Checkbox/Checkbox.tsx b/packages/fakeyou.com/src/components/common/Checkbox/Checkbox.tsx new file mode 100644 index 0000000000..35fa002acf --- /dev/null +++ b/packages/fakeyou.com/src/components/common/Checkbox/Checkbox.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { useId } from "hooks"; +import makeClass from "resources/makeClass"; + +interface Props { + checked?: boolean; + className?: string; + label?: string; + name?: string; + onChange?: any; +} + +export default function Checkbox({ checked = false, className = "", label = "", name = "", onChange }: Props) { + const id = "checkbox-" + useId(); + return
    + + { label && } +
    +}; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/common/Checkbox/index.tsx b/packages/fakeyou.com/src/components/common/Checkbox/index.tsx new file mode 100644 index 0000000000..6fb014c8a4 --- /dev/null +++ b/packages/fakeyou.com/src/components/common/Checkbox/index.tsx @@ -0,0 +1 @@ +export { default } from './Checkbox'; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/common/ImageInput/ImageInput.scss b/packages/fakeyou.com/src/components/common/ImageInput/ImageInput.scss index 21d1aaeced..612038a77e 100644 --- a/packages/fakeyou.com/src/components/common/ImageInput/ImageInput.scss +++ b/packages/fakeyou.com/src/components/common/ImageInput/ImageInput.scss @@ -3,9 +3,10 @@ .image-upload-frame { - @include breakpoint(min-width 992px) { - aspect-ratio: 1/1; - } + aspect-ratio: 4/3; + // @include breakpoint(min-width 992px) { + // aspect-ratio: 1/1; + // } } .fy-image-uploader { diff --git a/packages/fakeyou.com/src/components/common/NumberSlider/NumberSlider.tsx b/packages/fakeyou.com/src/components/common/NumberSlider/NumberSlider.tsx new file mode 100644 index 0000000000..7969ca429c --- /dev/null +++ b/packages/fakeyou.com/src/components/common/NumberSlider/NumberSlider.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import { Slider } from "components/common"; + +interface Props { + max?: number; + min?: number; + onChange?: any; + value?: number; +} + +export default function NumberSlider({ max, min, onChange, value }: Props) { + return <> + + + ; +}; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/common/NumberSlider/index.ts b/packages/fakeyou.com/src/components/common/NumberSlider/index.ts new file mode 100644 index 0000000000..1d210934ba --- /dev/null +++ b/packages/fakeyou.com/src/components/common/NumberSlider/index.ts @@ -0,0 +1 @@ +export { default } from './NumberSlider'; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/common/Radio/Radio.scss b/packages/fakeyou.com/src/components/common/Radio/Radio.scss new file mode 100644 index 0000000000..50b1846765 --- /dev/null +++ b/packages/fakeyou.com/src/components/common/Radio/Radio.scss @@ -0,0 +1,9 @@ +.fy-radio-input { + display: inline-block; + margin-right: 1rem; + + input[type=radio] { + margin-right: .5rem; + background-color: red; + } +} \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/common/Radio/Radio.tsx b/packages/fakeyou.com/src/components/common/Radio/Radio.tsx new file mode 100644 index 0000000000..d10e96cf6b --- /dev/null +++ b/packages/fakeyou.com/src/components/common/Radio/Radio.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { useId } from "hooks"; +import makeClass from "resources/makeClass"; +import "./Radio.scss"; + +interface Props { + className?: string; + label?: string; + name?: string; + onChange?: any; + value?: string; +} + +export default function Radio({ className = "", label = "", name = "", onChange = () => {}, value }: Props) { + const id = "checkbox-" + useId(); + return
    + + { label && } +
    ; +}; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/common/Radio/index.tsx b/packages/fakeyou.com/src/components/common/Radio/index.tsx new file mode 100644 index 0000000000..2237d4c67b --- /dev/null +++ b/packages/fakeyou.com/src/components/common/Radio/index.tsx @@ -0,0 +1 @@ +export { default } from './Radio'; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/common/Slider/Slider.tsx b/packages/fakeyou.com/src/components/common/Slider/Slider.tsx new file mode 100644 index 0000000000..a591c2f815 --- /dev/null +++ b/packages/fakeyou.com/src/components/common/Slider/Slider.tsx @@ -0,0 +1,12 @@ +import React from 'react'; + +interface Props { + max?: number; + min?: number; + onChange?: any; + value?: number; +} + +export default function Slider({ max, min, onChange, value }: Props) { + return ; +}; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/common/Slider/index.ts b/packages/fakeyou.com/src/components/common/Slider/index.ts new file mode 100644 index 0000000000..eed87a07a4 --- /dev/null +++ b/packages/fakeyou.com/src/components/common/Slider/index.ts @@ -0,0 +1 @@ +export { default } from './Slider'; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/common/index.tsx b/packages/fakeyou.com/src/components/common/index.tsx index fc02269cf2..8f896c4666 100644 --- a/packages/fakeyou.com/src/components/common/index.tsx +++ b/packages/fakeyou.com/src/components/common/index.tsx @@ -1,17 +1,25 @@ import AudioInput from './AudioInput'; -import ImageInput from './ImageInput'; +import Checkbox from './Checkbox'; import FileActions from './FileActions'; import FileDetails from './FileDetails'; import FileWrapper from './FileWrapper'; import FileLabel from './FileLabel'; +import ImageInput from './ImageInput'; +import NumberSlider from './NumberSlider'; +import Radio from './Radio'; +import Slider from './Slider'; import Spinner from './Spinner'; export { AudioInput, - ImageInput, + Checkbox, FileActions, FileDetails, FileWrapper, FileLabel, + ImageInput, + NumberSlider, + Radio, + Slider, Spinner }; \ No newline at end of file diff --git a/packages/fakeyou.com/src/resources/makeClass.ts b/packages/fakeyou.com/src/resources/makeClass.ts new file mode 100644 index 0000000000..2c08fb55c2 --- /dev/null +++ b/packages/fakeyou.com/src/resources/makeClass.ts @@ -0,0 +1,5 @@ +const makeClass = (base: string, add?: string) => ({ + className: `${ base }${ add ? " " + add : "" }` +}); + +export default makeClass; \ No newline at end of file diff --git a/packages/fakeyou.com/src/v2/view/pages/lipsync/LipsyncEditor/FaceAnimatorTitle.tsx b/packages/fakeyou.com/src/v2/view/pages/lipsync/LipsyncEditor/FaceAnimatorTitle.tsx index e84f271e37..cfe099fc67 100644 --- a/packages/fakeyou.com/src/v2/view/pages/lipsync/LipsyncEditor/FaceAnimatorTitle.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/lipsync/LipsyncEditor/FaceAnimatorTitle.tsx @@ -40,6 +40,7 @@ export default function FaceAnimatorTitle({ ...rest }) { const { audioProps, audioReady, + clearInputs, imageProps, imageReady, indexSet, @@ -58,6 +59,7 @@ export default function FaceAnimatorTitle({ ...rest }) { if (page === 2) { imageProps.clear(); audioProps.clear(); + clearInputs(); indexSet(0); } else if (!incomplete && !working) submit(); }; diff --git a/packages/fakeyou.com/src/v2/view/pages/lipsync/LipsyncEditor/LipsyncEditor.scss b/packages/fakeyou.com/src/v2/view/pages/lipsync/LipsyncEditor/LipsyncEditor.scss index bed71245ae..be1de2ec1e 100644 --- a/packages/fakeyou.com/src/v2/view/pages/lipsync/LipsyncEditor/LipsyncEditor.scss +++ b/packages/fakeyou.com/src/v2/view/pages/lipsync/LipsyncEditor/LipsyncEditor.scss @@ -12,6 +12,11 @@ $under992: max-width 992px; margin-bottom: 1rem; } } + + .sub-title { + display: block; + margin-top: 1rem; + } } .progress-header { diff --git a/packages/fakeyou.com/src/v2/view/pages/lipsync/LipsyncEditor/LipsyncEditor.tsx b/packages/fakeyou.com/src/v2/view/pages/lipsync/LipsyncEditor/LipsyncEditor.tsx index 542eaea13e..a51e461e48 100644 --- a/packages/fakeyou.com/src/v2/view/pages/lipsync/LipsyncEditor/LipsyncEditor.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/lipsync/LipsyncEditor/LipsyncEditor.tsx @@ -2,7 +2,7 @@ import React, { useState } from "react"; import { animated, useTransition } from "@react-spring/web"; import { v4 as uuidv4 } from "uuid"; import { useFile, useLocalize } from "hooks"; -import { AudioInput, ImageInput, Spinner } from "components/common"; +import { AudioInput, Checkbox, ImageInput, NumberSlider, Radio, Spinner } from "components/common"; import { springs } from "resources"; import { UploadAudio, @@ -30,16 +30,24 @@ import { } from "@storyteller/components/src/jobs/InferenceJob"; interface LipSyncProps { + animationChange: any; + animationStyle: any; audioProps: any; children?: any; + cropChange: any; + cropping: any; imageProps: any; index: number; - toggle: any; + orientation: any; + orientationChange: any; style: any; + toggle: any; enqueueInferenceJob: any; sessionSubscriptionsWrapper: any; t: any; inferenceJobsByCategory: any; + watermark: any; + watermarkChange: any; } interface EditorProps { sessionSubscriptionsWrapper: SessionSubscriptionsWrapper; @@ -54,37 +62,54 @@ interface EditorProps { const softSpring = { config: { mass: 1, tension: 80, friction: 10 } }; const InputPage = ({ + animationChange, + animationStyle, audioProps, + cropping, + cropChange, imageProps, + orientation, + orientationChange, toggle, style, t, + watermark, + watermarkChange, }: LipSyncProps) => { - return ( - -
    -
    {t("headings.image")}
    - toggle.image(imageProps.file ? true : false), - }} - /> -
    -
    -
    {t("headings.audio")}
    - { - toggle.audio(!!audioProps.file); - }, - hideActions: true, - }} - /> -
    -
    - ); + + return +
    +
    {t("headings.image")}
    + toggle.image(imageProps.file ? true : false), + }} + /> + + + + + + + + + + +
    +
    +
    {t("headings.audio")}
    + { + toggle.audio(!!audioProps.file); + }, + hideActions: true, + }} + /> +
    +
    ; }; const Working = ({ audioProps, imageProps, index, style, t }: LipSyncProps) => { @@ -143,6 +168,18 @@ export default function LipsyncEditor({ const imageProps = useFile({}); // contains upload inout state and controls, see docs const [index, indexSet] = useState(0); // index = slideshow slide position + + const [animationStyle,animationStyleSet] = useState(0); + const [cropping,croppingSet] = useState("cropped"); + const [orientation,orientationSet] = useState("landscape"); + const [watermark,watermarkSet] = useState(false); + + const animationChange = ({ target }: any) => animationStyleSet(target.value); + const cropChange = ({ target }: any) => croppingSet(target.value); + const orientationChange = ({ target }: any) => orientationSet(target.value); + const watermarkChange = ({ target }: any) => watermarkSet(target.checked); + const clearInputs = () => { animationStyleSet(0); croppingSet("cropped"); orientationSet("landscape"); watermarkSet(false); } + const makeRequest = (mode: number) => ({ uuid_idempotency_token: uuidv4(), file: mode ? imageProps.file : audioProps.file, @@ -171,6 +208,10 @@ export default function LipsyncEditor({ if ("upload_token" in responses.image) { indexSet(3); // set face animator API working page return EnqueueFaceAnimation({ + // backend_animation_key: animationStyle, + // backend_cropping_key: cropping === "cropped", + // backend_orientation_key: orientation === "landscape", + // backend_watermark_key: watermark, uuid_idempotency_token: uuidv4(), audio_source: { maybe_media_upload_token: responses.audio.upload_token, @@ -198,6 +239,7 @@ export default function LipsyncEditor({ const headerProps = { audioProps, audioReady, + clearInputs, imageProps, imageReady, indexSet, @@ -223,14 +265,22 @@ export default function LipsyncEditor({ ) : ( From 78c8e610904fa976aa306cd0305d493880630fe7 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Sun, 1 Oct 2023 04:22:26 -0400 Subject: [PATCH 3/3] add additional args --- .../face_animation/EnqueueFaceAnimation.ts | 5 ++ .../lipsync/LipsyncEditor/LipsyncEditor.tsx | 66 ++++++++++++------- 2 files changed, 47 insertions(+), 24 deletions(-) diff --git a/packages/components/src/api/face_animation/EnqueueFaceAnimation.ts b/packages/components/src/api/face_animation/EnqueueFaceAnimation.ts index 0beae23e82..8c404bab57 100644 --- a/packages/components/src/api/face_animation/EnqueueFaceAnimation.ts +++ b/packages/components/src/api/face_animation/EnqueueFaceAnimation.ts @@ -18,6 +18,11 @@ export interface EnqueueFaceAnimationRequest { audio_source: AudioSource, image_source: ImageSource, + + crop?: string, + make_still?: boolean, + high_quality?: boolean, + remove_watermark?: boolean, } // export interface EnqueueFaceAnimationSuccessResponse { diff --git a/packages/fakeyou.com/src/v2/view/pages/lipsync/LipsyncEditor/LipsyncEditor.tsx b/packages/fakeyou.com/src/v2/view/pages/lipsync/LipsyncEditor/LipsyncEditor.tsx index a51e461e48..86af634c81 100644 --- a/packages/fakeyou.com/src/v2/view/pages/lipsync/LipsyncEditor/LipsyncEditor.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/lipsync/LipsyncEditor/LipsyncEditor.tsx @@ -38,16 +38,18 @@ interface LipSyncProps { cropping: any; imageProps: any; index: number; - orientation: any; - orientationChange: any; + highQuality: any; + highQualityChange: any; + still: any; + stillChange: any; style: any; toggle: any; enqueueInferenceJob: any; sessionSubscriptionsWrapper: any; t: any; inferenceJobsByCategory: any; - watermark: any; - watermarkChange: any; + removeWatermark: any; + removeWatermarkChange: any; } interface EditorProps { sessionSubscriptionsWrapper: SessionSubscriptionsWrapper; @@ -68,13 +70,15 @@ const InputPage = ({ cropping, cropChange, imageProps, - orientation, - orientationChange, + highQuality, + highQualityChange, + still, + stillChange, toggle, style, t, - watermark, - watermarkChange, + removeWatermark, + removeWatermarkChange, }: LipSyncProps) => { return @@ -87,13 +91,19 @@ const InputPage = ({ }} /> - - - - + + + + + - - + + + + + + + @@ -170,15 +180,17 @@ export default function LipsyncEditor({ const [animationStyle,animationStyleSet] = useState(0); - const [cropping,croppingSet] = useState("cropped"); - const [orientation,orientationSet] = useState("landscape"); - const [watermark,watermarkSet] = useState(false); + const [cropping,croppingSet] = useState("full"); + const [removeWatermark,removeWatermarkSet] = useState(false); + const [highQuality,highQualitySet] = useState(true); + const [still,stillSet] = useState(false); const animationChange = ({ target }: any) => animationStyleSet(target.value); const cropChange = ({ target }: any) => croppingSet(target.value); - const orientationChange = ({ target }: any) => orientationSet(target.value); - const watermarkChange = ({ target }: any) => watermarkSet(target.checked); - const clearInputs = () => { animationStyleSet(0); croppingSet("cropped"); orientationSet("landscape"); watermarkSet(false); } + const removeWatermarkChange = ({ target }: any) => removeWatermarkSet(target.checked); + const highQualityChange = ({ target }: any) => highQualitySet(target.checked); + const stillChange = ({ target }: any) => stillSet(target.checked); + const clearInputs = () => { animationStyleSet(0); croppingSet("crop"); removeWatermarkSet(false); } const makeRequest = (mode: number) => ({ uuid_idempotency_token: uuidv4(), @@ -219,6 +231,10 @@ export default function LipsyncEditor({ image_source: { maybe_media_upload_token: responses.image.upload_token, }, + crop: cropping, + make_still: still, + high_quality: highQuality, + remove_watermark: removeWatermark, }); } }) @@ -271,16 +287,18 @@ export default function LipsyncEditor({ cropping, enqueueInferenceJob, imageProps, - orientation, - orientationChange, + highQuality, + highQualityChange, + still, + stillChange, sessionSubscriptionsWrapper, inferenceJobsByCategory, index, t, toggle: { audio: readyMedia(1), image: readyMedia(0) }, style, - watermark, - watermarkChange, + removeWatermark, + removeWatermarkChange, }} /> ) : (