# Using Piper

Navigate to [Piper](https://github.com/rhasspy/piper) and follow the setup instructions below to run Piper locally as a TTS backend.

### Setting Up Piper Locally

#### Method 1: Setup via Docker

1. Clone the artibex/piper repository:

   ```bash
   git clone git@github.com:artibex/piper-http.git
   ```
2. Navigate to the `piper-http` directory:

   ```bash
   cd piper-http
   ```
3. Add CORS support by installing Flask CORS in the Dockerfile. To do this, locate the Dockerfile and add the following line:

   ```bash
   RUN pip install flask_cors
   ```
4. Build the Piper Docker image:

   ```bash
   docker build -t http-piper .
   ```
5. Run the Piper Docker container:

   ```bash
   docker run --name piper -p 5000:5000 piper
   ```
6. To allow CORS within the Piper server, modify the `http_server.py` file inside the running Docker container:
   * Navigate to the `piper-http` container's files:

     ```bash
     docker exec -it piper /bin/bash
     ```
   * Locate the `http_server.py` file:

     ```bash
     cd /app/piper/src/python_run/piper
     ```
   * Edit `http_server.py` and add the following lines at the top to enable CORS:

     ```python
     from flask_cors import CORS
     CORS(app)
     ```
7. Save the changes and restart the Piper server inside the container:

   ```bash
   python3 http_server.py
   ```

#### Method 2: Manual Setup

1. Clone the repository:

   ```bash
   git clone https://github.com/flukexp/PiperTTS-API-Wrapper.git
   ```
2. Navigate to the project directory:

   ```bash
   cd PiperTTS-API-Wrapper
   ```
3. Download piper, install Piper sample voices and start piper server:

   ```bash
   ./piper_installer.sh
   ```

### Make sure Piper is enabled for TTS:

```bash
Settings -> Text-to-Speech -> TTS Backend -> Piper
```

#### Notes

* Piper can be used as a local text-to-speech backend in your application.
* For more details on models and configurations, refer to the official [Piper GitHub repository](https://github.com/rhasspy/piper).
