$pythonVersion = "3.11.9" $pythonVersionShort = "3.11" $pythonInstallerUrl = "https://www.python.org/ftp/python/${pythonVersion}/python-${pythonVersion}-amd64.exe" $pythonInstallerPath = "$env:TEMP\python-${pythonVersion}.exe" $pyActivate = Join-Path . "Scripts\Activate.ps1" $espeakngVersion = "1.51" $espeakngInstallerUrl = "https://github.com/espeak-ng/espeak-ng/releases/download/${espeakngVersion}/espeak-ng-X64.msi" $espeakngInstallerPath = "$env:TEMP\espeak-ng-${espeakngVersion}.msi" $msBuildToolsVersion = "17" $msBuildToolsInstallerUrl = "https://aka.ms/vs/${msBuildToolsVersion}/release/vs_BuildTools.exe" $msBuildToolsInstallerPath = "$env:TEMP\vs_BuildTools${msBuildToolsVersion}.exe" $cudaToolkitVersion = "12.4.1_551.78" $cudaToolkitInstallerUrl = "https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_${cudaToolkitVersion}_windows.exe" $cudaToolkitInstallerPath = "$env:TEMP\cudaToolkit_${cudaToolkitVersion}.exe" $pytorchVersion = "CUDA 12.4" $pytorchInstallCommand = "pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124" $coquiVersion = "0.25.1" $coquiZipUrl = "https://github.com/idiap/coqui-ai-TTS/archive/refs/tags/v$coquiVersion.zip" $coquiZipPath = "$env:TEMP\coqui_v$coquiVersion.zip" function Is-PythonInstalled { try { $pythonVersionOutput = python --version 2>&1 if ($pythonVersionOutput -match "Python ($pythonVersion)") { Write-Output "Python $($matches[1]) is already installed." return $true } else { return $false } } catch { return $false } } function Install-Python { Write-Output "Installing Python $pythonVersion..." Invoke-WebRequest -Uri $pythonInstallerUrl -OutFile $pythonInstallerPath Start-Process -FilePath $pythonInstallerPath -ArgumentList "/quiet InstallAllUsers=1 PrependPath=1" -Wait Remove-Item $pythonInstallerPath -Force } function Setup-Python-Environment { py -$pythonVersionShort -m venv . & $pyActivate python -m pip install --upgrade pip setuptools wheel deactivate } function Install-Espeakng { Write-Output "Installing eSpeak-ng $espeakngVersion..." Invoke-WebRequest -Uri $espeakngInstallerUrl -OutFile $espeakngInstallerPath Start-Process -FilePath "msiexec.exe" -ArgumentList "/i `"$espeakngInstallerPath`" /passive /norestart" -Wait Remove-Item $espeakngInstallerPath -Force } function Install-MsBuildTools { Write-Output "Installing Visual Studio Build Tools $msBuildToolsVersion..." Invoke-WebRequest -Uri $msBuildToolsInstallerUrl -OutFile $msBuildToolsInstallerPath Start-Process -FilePath $msBuildToolsInstallerPath -ArgumentList ` "--passive --wait --norestart --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended" -Wait Remove-Item $msBuildToolsInstallerPath -Force } function Install-CUDA { Write-Output "Installing CUDA Toolkit $cudaToolkitVersion..." Invoke-WebRequest -Uri $cudaToolkitInstallerUrl -OutFile $cudaToolkitInstallerPath Start-Process -FilePath $cudaToolkitInstallerPath -ArgumentList "-s -n" -Wait Remove-Item $cudaToolkitInstallerPath -Force } function Install-PyTorch { Write-Output "Installing PyTorch $pytorchVersion..." & $pyActivate Invoke-Expression "$pytorchInstallCommand --quiet" deactivate } function Install-Coqui { Write-Output "Installing Coqui $coquiVersion..." Invoke-WebRequest -Uri $coquiZipUrl -OutFile $coquiZipPath Expand-Archive -Path $coquiZipPath -DestinationPath . -Force Remove-Item $coquiZipPath -Force & $pyActivate cd coqui-ai-TTS-$coquiVersion pip install -e . --quiet deactivate cd .. } Write-Output "Starting voice environment installation." Set-ExecutionPolicy Unrestricted if (-not (Is-PythonInstalled)) { Install-Python } Setup-Python-Environment Install-Espeakng Install-MsBuildTools Install-CUDA Install-PyTorch Install-Coqui mkdir output Write-Output "Install finished. Please restart your machine before first startup." Write-Output "To generate dialogue type in PS terminal in VoiceGenerator directory:`n 1] .\Scripts\Activate.ps1`n 2] py GenerateDialogue.py."