Files
WhisperLive/web_live/README.md
T

220 lines
5.2 KiB
Markdown

# WhisperLive Remote Setup Guide
## Overview
This setup allows you to run WhisperLive on your intranet machine and expose it through a public cloud instance via SSH remote port forwarding.
## Architecture
```
Browser → Nginx (Cloud) → SSH Tunnel → WhisperLive Server (Intranet)
```
## Setup Steps
### 1. WhisperLive Server Setup (Intranet Machine)
First, install and run WhisperLive on your intranet machine:
```bash
# Install WhisperLive
pip install whisper-live
# OR
git clone https://github.com/collabora/WhisperLive
# OR use this repo till final merge:
git clone https://github.com/klonikar/WhisperLive
# Start the server (default port 9090)
python run_server.py -fw deepdml/faster-whisper-large-v3-turbo-ct2
```
### 2. SSH Remote Port Forwarding
From your intranet machine, create an SSH tunnel to your cloud instance:
```bash
# Basic SSH tunnel - forwards local port 9090 to cloud instance port 9090
ssh -R 9090:localhost:9090 user@your-cloud-instance.com
# Keep the tunnel alive with auto-reconnect
ssh -R 9090:localhost:9090 -o ServerAliveInterval=60 -o ServerAliveCountMax=3 user@your-cloud-instance.com
# Run in background with autossh (install autossh first)
autossh -M 0 -R 9090:localhost:9090 -o ServerAliveInterval=60 -o ServerAliveCountMax=3 user@your-cloud-instance.com
```
### 3. Nginx Configuration (Cloud Instance)
Apply the nginx configuration provided in the artifacts:
```bash
# Edit your nginx configuration
sudo nano /etc/nginx/sites-available/your-site
# Test the configuration
sudo nginx -t
# Reload nginx
sudo systemctl reload nginx
```
### 4. SSL Certificate (Recommended)
For WebSocket connections over HTTPS, you'll need an SSL certificate:
```bash
# Using Let's Encrypt with certbot
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourserver.com
```
### 5. Firewall Configuration
Ensure your cloud instance firewall allows the necessary ports:
```bash
# Allow HTTP and HTTPS
sudo ufw allow 80
sudo ufw allow 443
# If using a specific port for the tunnel
sudo ufw allow 9090
```
## Testing the Setup
### 0. Test client from filesystem
Simply open the file whisperlive_client.html from the file explorer and connect it to a whisperlive server on the localhost
### 1. Test WhisperLive Server
```bash
# On your intranet machine
curl http://localhost:9090/health
```
### 2. Test SSH Tunnel
```bash
# On your cloud instance
curl http://localhost:9090/health
```
### 3. Test Nginx Proxy
```bash
# From outside
curl http://yourserver.com/whisper-ws
```
## Browser Client Usage
1. Open the HTML page in your browser
2. Update the WebSocket URL to: `wss://yourserver.com/whisper-ws` (or `ws://` for HTTP)
3. Configure sample rate and language
4. Click "Start Recording" to begin transcription
## Troubleshooting
### Common Issues
1. **WebSocket Connection Failed**
- Check if SSH tunnel is active
- Verify nginx configuration
- Check firewall settings
2. **Audio Not Streaming**
- Ensure microphone permissions are granted
- Check browser console for errors
- Verify audio format compatibility
3. **SSH Tunnel Disconnects**
- Use `autossh` for auto-reconnection
- Increase `ServerAliveInterval` settings
- Check network stability
### Debug Commands
```bash
# Check if WhisperLive is running
ps aux | grep whisper
# Check SSH tunnel status
ps aux | grep ssh
# Check nginx logs
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
# Test WebSocket connection
wscat -c ws://localhost:9090 # Install wscat: npm install -g wscat
```
## Security Considerations
1. **Use SSH Key Authentication**
```bash
# Generate SSH key if not exists
ssh-keygen -t rsa -b 4096
# Copy to cloud instance
ssh-copy-id user@your-cloud-instance.com
```
2. **Restrict SSH Access**
```bash
# In /etc/ssh/sshd_config on cloud instance
AllowUsers your-username
PermitRootLogin no
PasswordAuthentication no
```
3. **Use SSL/TLS**
- Always use HTTPS in production
- Configure proper SSL certificates
- Use secure WebSocket connections (wss://)
## Performance Optimization
1. **Audio Quality Settings**
- Use 16kHz sample rate for better performance
- Enable noise suppression and echo cancellation
- Adjust chunk size based on network conditions
2. **Network Optimization**
- Use compression in SSH tunnel: `ssh -C -R ...`
- Optimize nginx buffer settings
- Consider using a VPN for better tunnel stability
3. **WhisperLive Settings**
```bash
# Start with optimized settings
python -m whisper_live.server \
--port 9090 \
--host 0.0.0.0 \
--model base \
--device cuda # if GPU available
```
## Systemd Service (Optional)
Create a systemd service for auto-starting the SSH tunnel:
```ini
# /etc/systemd/system/whisper-tunnel.service
[Unit]
Description=WhisperLive SSH Tunnel
After=network.target
[Service]
Type=simple
User=your-username
ExecStart=/usr/bin/autossh -M 0 -R 9090:localhost:9090 -o ServerAliveInterval=60 -o ServerAliveCountMax=3 user@your-cloud-instance.com
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
```
```bash
# Enable and start the service
sudo systemctl enable whisper-tunnel.service
sudo systemctl start whisper-tunnel.service
sudo systemctl status whisper-tunnel.service
```