Integración de PowerShell (Windows)¶
Para facilitar la interacción con la CLI STT (Voz a Texto), puede agregar una función de acceso directo a su perfil de PowerShell. Esto le permite simplemente escribir “su pregunta” en cualquier ventana de PowerShell.
Se aplica a: Windows PowerShell 5.1 y PowerShell 7+ (recomendado). PowerShell 7 se puede instalar desde Microsoft Store o mediante
winget install Microsoft.PowerShell.
Instrucciones de configuración¶
1. Permitir la ejecución del script (configuración única)¶
PowerShell bloquea los scripts de forma predeterminada. Abra PowerShell como administrador y ejecute:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
2. Abra su perfil de PowerShell¶
notepad $PROFILE
Si el archivo aún no existe, créelo primero:
New-Item -ItemType File -Path $PROFILE -Force
notepad $PROFILE
3. Pega el siguiente bloque al final del archivo.¶
# --- STT Project Path Resolution ---
function s {
param(
[Parameter(ValueFromRemainingArguments = $true)]
[string[]]$Query
)
if ($Query.Count -eq 0) {
Write-Host "question <your question>"
return
}
$QueryString = $Query -join " "
Update-GithubIp # equivalent of update_github_ip
$SHORT_TIMEOUT_SECONDS = 2
$LONG_TIMEOUT_SECONDS = 70
# Path shortcuts
$PY_EXEC = "$env:SL5NET_AURA_PROJECT_ROOT\.venv\Scripts\python.exe"
$CLI_SCRIPT = "$env:SL5NET_AURA_PROJECT_ROOT\scripts\py\cli_client.py"
$TempFile = [System.IO.Path]::GetTempFileName()
# --- 1. First try (short timeout) ---
$proc = Start-Process -FilePath $PY_EXEC `
-ArgumentList "-u", "`"$CLI_SCRIPT`"", "`"$QueryString`"", "--lang", "de-DE", "--unmasked" `
-RedirectStandardOutput $TempFile `
-RedirectStandardError "$TempFile.err" `
-NoNewWindow -PassThru
$finished = $proc.WaitForExit($SHORT_TIMEOUT_SECONDS * 1000)
$Output = Get-Content $TempFile -Raw -ErrorAction SilentlyContinue
if (-not $finished) {
# Still running — this is the timeout case
$ExitCode = 124
} else {
$ExitCode = $proc.ExitCode
}
Remove-Item $TempFile, "$TempFile.err" -ErrorAction SilentlyContinue
# --- Service check ---
$streamlitRunning = Get-Process -Name "streamlit" -ErrorAction SilentlyContinue
if (($Output -match "Verbindungsfehler") -or (-not $streamlitRunning)) {
Write-Host "Service-Check: Backend oder Frontend fehlt. Starte neu..."
Start-Service-STT # equivalent of start_service
Write-Host "++++++++++++++++++++++++++++++++++++++++++++++++++"
$KiwixScript = "$env:SL5NET_AURA_PROJECT_ROOT\config\maps\plugins\standard_actions\wikipedia_local\de-DE\kiwix-docker-start-if-not-running.sh"
if (Test-Path $KiwixScript) {
bash $KiwixScript
}
Write-Host "++++++++++++++++++++++++++++++++++++++++++++++++++"
Write-Host "BITTE ERNEUT EINGEBEN: s $QueryString"
return
}
# --- 2. Timeout OR immediate success ---
if ($ExitCode -eq 124 -or $ExitCode -eq 0) {
if ($ExitCode -eq 0) {
Write-Host $Output
return
}
Write-Host "answer > $SHORT_TIMEOUT_SECONDS sec. set Timeout= $LONG_TIMEOUT_SECONDS s..."
$TempFile2 = [System.IO.Path]::GetTempFileName()
$proc2 = Start-Process -FilePath $PY_EXEC `
-ArgumentList "-u", "`"$CLI_SCRIPT`"", "`"$QueryString`"", "--lang", "de-DE", "--unmasked" `
-RedirectStandardOutput $TempFile2 `
-RedirectStandardError "$TempFile2.err" `
-NoNewWindow -PassThru
$finished2 = $proc2.WaitForExit($LONG_TIMEOUT_SECONDS * 1000)
$Output2 = Get-Content $TempFile2 -Raw -ErrorAction SilentlyContinue
$ExitCode2 = if ($finished2) { $proc2.ExitCode } else { 124 }
Remove-Item $TempFile2, "$TempFile2.err" -ErrorAction SilentlyContinue
Write-Host $Output2
if ($ExitCode2 -ne 0) {
Write-Host "WARNUNG: Timeout > $LONG_TIMEOUT_SECONDS Sec."
}
return
}
# --- Unexpected error ---
Write-Host "ERROR"
Write-Host $Output
}
4. Recarga tu perfil¶
. $PROFILE
Notas específicas de Windows¶
Ruta de Python: en Windows, el binario del entorno virtual está en
.venv\Scripts\python.exeen lugar de.venv/bin/python3. Ajuste$PY_EXECsi su configuración es diferente.Variable de entorno
SL5NET_AURA_PROJECT_ROOT: establezca esto en las variables de entorno de su sistema o agregue la siguiente línea encima de la función en su perfil:$env:SL5NET_AURA_PROJECT_ROOT = "C:\path\to\your\project"
timeout/mktemp: Estas herramientas de Unix no están disponibles de forma nativa. El script anterior utiliza equivalentes nativos de PowerShell (WaitForExitcon un tiempo de espera de milisegundos yGetTempFileName()).pgrep: Reemplazado conGet-Process -Name "streamlit".start_service/update_github_ip: Deben definirse como funciones de PowerShell (Start-Service-STT,Update-GithubIp) en el mismo archivo de perfil, antes de la funcións.Script WSL Kiwix: si
bashestá disponible (a través de WSL), el script auxiliar.shse ejecutará tal cual. De lo contrario, adáptelo a un equivalente.ps1o.bat.Múltiples versiones de PowerShell:
$PROFILEapunta a diferentes archivos para Windows PowerShell 5.1 y PowerShell 7. Para verificar qué archivo de perfil está activo, ejecute$PROFILEen cada versión.
Características¶
Rutas dinámicas: encuentra automáticamente la raíz del proyecto a través de la variable de entorno
SL5NET_AURA_PROJECT_ROOT.Reinicio automático: si el backend no funciona, intenta ejecutar
Start-Service-STTy los servicios locales de Wikipedia.Tiempos de espera inteligentes: primero intenta una respuesta rápida de 2 segundos y luego vuelve a un modo de procesamiento profundo de 70 segundos.