replace voice recorder realization for support chrome
This commit is contained in:
parent
729a3c18ac
commit
66716d2314
1 changed files with 326 additions and 294 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
import { useState, useRef, useEffect } from 'react';
|
import { useState, useRef, useEffect } from 'react';
|
||||||
import { Recorder } from '../../lib/recorder';
|
import { Recorder } from '../../lib/recorder';
|
||||||
|
import VoiceCards from './VoiceCards';
|
||||||
import './ChatterboxTTS.css';
|
import './ChatterboxTTS.css';
|
||||||
|
|
||||||
const API_URL = 'https://back.hack.kinsle.ru/process-audio';
|
const API_URL = 'https://back.hack.kinsle.ru/process-audio';
|
||||||
|
|
@ -221,13 +222,21 @@ const ChatterboxTTS = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="chatterbox-container">
|
<div className="chatterbox-container">
|
||||||
<h1>🎙️ Chatterbox TTS</h1>
|
<h1>Подделка голоса</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Deepfake — синтез правдоподобных поддельных изображений, видео и звука при помощи искусственного интеллекта. Чаще всего дипфейки изображают известных людей в вымышленных ситуациях.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Давайте на нашем примере разберемся с этим! Для этого нам нужен небольшой отрывок вашего голоса. Не переживайте - это безопасно! Мы трепетно относимся к чувствительной информации, не храним ваши данные после обработки и не передаем их третьим лицам - все строго в соответствии с политикой соглашения.
|
||||||
|
</p>
|
||||||
|
|
||||||
<form onSubmit={handleSubmit}>
|
<form onSubmit={handleSubmit}>
|
||||||
{/* Запись голоса */}
|
{/* Запись голоса */}
|
||||||
<div className={voiceSectionClass}>
|
<div className={voiceSectionClass}>
|
||||||
<div className="voice-label">
|
<div className="voice-label">
|
||||||
🎤 Запишите голосовое сообщение для проверки на бота
|
🎤 Запишите голосовое сообщение - достаточно 10-15 секунд вашего голоса
|
||||||
{isUsingRecordedVoice && <span className="check-badge">✓ Готово</span>}
|
{isUsingRecordedVoice && <span className="check-badge">✓ Готово</span>}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -240,7 +249,7 @@ const ChatterboxTTS = () => {
|
||||||
|
|
||||||
{showVoiceText && (
|
{showVoiceText && (
|
||||||
<div className="voice-text">
|
<div className="voice-text">
|
||||||
📢 Произнесите: <span style={{ color: '#667eea' }}>"Хакатон 2026 французский стиль"</span>
|
📢 Произнесите, например: <span style={{ color: '#667eea' }}>"Хакатон 2026 походим модуль deepfake, кейс Цент Инвест команда Атейкин"</span>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|
@ -256,7 +265,7 @@ const ChatterboxTTS = () => {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Загрузка файла */}
|
{/* Загрузка файла */}
|
||||||
<div className="or-divider">или загрузите файл</div>
|
<div className="or-divider">или загрузите файл фрагмента голоса, желательно свой :D</div>
|
||||||
|
|
||||||
<div className="form-group">
|
<div className="form-group">
|
||||||
<div
|
<div
|
||||||
|
|
@ -273,6 +282,27 @@ const ChatterboxTTS = () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Дипфейки часто создают и применяют в преступных целях. Их могут использовать для распространения ложных новостей, обмана или прохождения аудио- и видео- аутентификации.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Имея небольшой отрывок речи человека, мошенники могут полностью возсоздать интонацию, произношение и темперамет голоса.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
{((isUsingRecordedVoice && recordedBlobRef.current) || fileName) && (
|
||||||
|
<div>
|
||||||
|
<p>
|
||||||
|
Вот примеры дипфейков.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<VoiceCards voiceBlob={recordedBlobRef.current} />
|
||||||
|
|
||||||
|
<h2>
|
||||||
|
Вы можете попробовать самостоятельно сделат дипфейк из своего голоса!
|
||||||
|
</h2>
|
||||||
|
|
||||||
{/* Текст */}
|
{/* Текст */}
|
||||||
<div className="form-group">
|
<div className="form-group">
|
||||||
<label>Текст для синтеза (макс 300 символов)</label>
|
<label>Текст для синтеза (макс 300 символов)</label>
|
||||||
|
|
@ -281,7 +311,7 @@ const ChatterboxTTS = () => {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Язык */}
|
{/* Язык */}
|
||||||
<div className="form-group">
|
{/* <div className="form-group">
|
||||||
<label>Язык</label>
|
<label>Язык</label>
|
||||||
<select value={language} onChange={e => setLanguage(e.target.value)}>
|
<select value={language} onChange={e => setLanguage(e.target.value)}>
|
||||||
<option value="en">English</option>
|
<option value="en">English</option>
|
||||||
|
|
@ -293,7 +323,7 @@ const ChatterboxTTS = () => {
|
||||||
<option value="pt">Portuguese</option>
|
<option value="pt">Portuguese</option>
|
||||||
<option value="hi">Hindi</option>
|
<option value="hi">Hindi</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div> */}
|
||||||
|
|
||||||
{/* Слайдеры */}
|
{/* Слайдеры */}
|
||||||
<div className="form-group">
|
<div className="form-group">
|
||||||
|
|
@ -330,12 +360,14 @@ const ChatterboxTTS = () => {
|
||||||
<button type="submit" className="submit-btn" disabled={loading}>
|
<button type="submit" className="submit-btn" disabled={loading}>
|
||||||
🚀 Сгенерировать аудио
|
🚀 Сгенерировать аудио
|
||||||
</button>
|
</button>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{loading && (
|
{loading && (
|
||||||
<div className="loading-block">
|
<div className="loading-block">
|
||||||
<div className="spinner" />
|
<div className="spinner" />
|
||||||
<p>Генерируем аудио... Это может занять 10-30 секунд</p>
|
<p>Генерируем аудио... Это может занять 5-15 секунд</p>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|
@ -346,7 +378,7 @@ const ChatterboxTTS = () => {
|
||||||
<h3>✅ Готово!</h3>
|
<h3>✅ Готово!</h3>
|
||||||
<audio src={resultUrl} controls />
|
<audio src={resultUrl} controls />
|
||||||
<br />
|
<br />
|
||||||
<a href={resultUrl} className="download-btn" download="output.wav">💾 Скачать WAV</a>
|
<a href={resultUrl} className="download-btn" download="output.wav">💾 Скачать WAV'ку!</a>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue