Menu Zavřít

Češi podpořili ukrajinský startup, který dal hlas Skywalkerovi či Presleymu. Respeecher boduje v Hollywoodu a míří do her i armády

29. 5. 2025
Doba čtení: 3 minuty
Ondřej Homola, jeden z partnerů N1
Autor: Pale Fire Capital (publikováno se svolením)
  • Zakladatelé fondu N1 spustili v březnu spolu s Pale Fire Capital, Josefem Průšou, Liborem Winklerem a dalšími partnery nový investiční projekt zaměřený na podporu ukrajinských startupů
  • Svoji první investici fond N1 Ventures U-Tech nasměroval do firmy Respeecher, která spolupracuje s velkými hollywoodskými studii i vývojáři počítačových her. Vytvořila třeba hlas Elvise Presleyho, Luka Skywalkera nebo Richarda Nixona
  • Fond hodlá do ukrajinských startupů v několika dalších letech investovat zhruba 10 milionů eur, tedy necelou čtvrt miliardu korun

Hollywoodské produkce, slavné televizní show, ale i vojenské technologie – všude tam se prosazuje ukrajinský startup Respeecher, jehož software pro syntézu řeči dokáže s pomocí umělé inteligence věrně napodobit lidský hlas. Díky tomu již delší dobu spolupracuje s velkými americkými studii i vývojáři počítačových her. Zároveň má ale také nástroj pro ukrajinskou armádu zvaný Zvook, který detekuje dělostřeleckou palbu a pomáhá chránit civilní cíle.

A právě do této společnosti nyní směřuje první investice nově vzniklého fondu N1 Ventures U-Tech. Za ním stojí zakladatelé fondu N1 i známá jména českého byznysu – investiční skupina Pale Fire Capital a jeden z jejích partnerů Jan Barta, zakladatel Prusa Research Josef Průša, filantrop, investor a partner investiční skupiny RSJ Libor Winkler, podnikatel Ondřej Homola a další významní čeští i zahraniční investoři. Jejich první sázka je zároveň jasným signálem, že Ukrajina je dnes nejen bojištěm, nýbrž také úrodnou půdou pro technologické inovace.

Outstream Placeholder

Svůj nový investiční projekt spustili zakladatelé zmíněného fondu letos v březnu s tím, že se zaměří právě na podporu ukrajinských startupů. Do nich chce v první fázi investovat vyšší jednotky milionů eur. „Zatím jde spíše o symbolické investice, ale směřování nového fondu N1 nás baví,” vysvětluje důvody podpory fondu Barta.

Pomoc v nejtěžších časech

Vznik samostatného fondu je celkem logickým vyvrcholením dvou let aktivní spolupráce s ukrajinskou startupovou scénou. Třeba jeden z partnerů N1 Homola tam začal jezdit hned v roce 2023.

„Chtěli jsme pomoct v těch nejtěžších časech lidem, kteří neztratili ani v extrémních podmínkách sílu budovat tam svoje firmy a plnit si sny. Pořádali jsme konference v Praze i v Kyjevě, vozili jsme tam investory z EU a USA, pomáhali jsme startupům dostat se na trhy EU. Prostě jsme jim všemožně pomáhali,“ říká k tomu Homola, podle kterého tak s kolegy získal na Ukrajině unikátní postavení.

O válkou sužovanou zemi se totiž zajímá stále více investorů, a právě Češi za tu dobu už znají tamní scénu velmi dobře. Vidí týmy, které mají drajv, odvahu a unikátní know-how, ale kterým zároveň často chybí přístup ke kapitálu, kontakt s evropskými trhy nebo zkušenosti s globálním škálováním. S tím vším jim mohou čeští investoři pomoci. 

Byznys s filmovými trailery je nejen v Hollywoodu velkým tajemstvím. Za promítání před úspěšnými snímky se platí miliony, v Česku jsou zdarma
Přečtěte si také:

Byznys s filmovými trailery je nejen v Hollywoodu velkým tajemstvím. Za promítání před úspěšnými snímky se platí miliony, v Česku jsou zdarma

„A samozřejmě tak můžeme získat i velice zajímavou investiční příležitost,“ dodává Homola a pro Euro.cz doplňuje, že v plánu je okolo dalších dvaceti investic, z nichž by ještě letos mohlo vyjít pět až šest. Některé se zaměřují rovněž na využití umělé inteligence, jiné zase na oblast zdravotnictví.

Také pro Pale Fire Capital jsou investice do technologických firem jednou z cest, jak mohou podpořit ekonomický rozvoj Ukrajiny. „I proto, aby měla po válce na co navazovat. A stejně tak, jako je pro Ukrajinu nyní důležité, aby neztratila kontakt s inovacemi, které se odehrávají na evropských trzích, je pro nás zajímavé pozorovat zblízka tamní dynamické prostředí a skokový vývoj například v oblasti produktů dvojího užití,” doplňuje Jan Barta.

CIF25

Emmy za hlas Richarda Nixona

O tom, že si fond vybral pro svoji první investici zřejmě dobře, svědčí dosavadní úspěchy Respeecheru. Jeho software dnes využívají hollywoodská studia, tvůrci her, reklamy nebo hudebního průmyslu. Konkrétně firma vytvořila třeba hlas mladého Luka Skywalkera pro Disney+ nebo řeč Elvise Presleyho pro finále America’s Got Talent v roce 2022. Za hlas Richarda Nixona ve filmu In Event of Moon Disaster dokonce Ukrajinci získali cenu Emmy.

Leckoho by napadlo, že s něčím takovým jsou spojená i rizika a etická dilemata, která plynou z případného zneužití nástrojů pro syntézu řeči při výrobě a šíření dezinformací a deep-fake obsahů. Respeecher si je toho dobře vědom a právě i proto se stal lídrem celosvětových iniciativ, které proti podobnému zneužití bojují, vyvíjejí nástroje, jak se mu bránit, a zastávají vysoké etické standardy.

  • Našli jste v článku chybu?
'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }