Spaces:
Running
Running
title: Aristotle | |
emoji: 🏆 | |
colorFrom: gray | |
colorTo: green | |
sdk: gradio | |
sdk_version: 5.1.0 | |
app_file: app.py | |
pinned: false | |
license: apache-2.0 | |
short_description: Ancient Greek text to audio | |
Aristotle | |
========= | |
![Python Version Badge] | |
[![Hugging Face space badge]][Hugging Face space URL] | |
[![GitHub workflow status badge][GitHub workflow status badge]][GitHub workflow status URL] | |
[![Hugging Face sync status badge]][Hugging Face sync status URL] | |
[![Docker Hub][Docker Pulls Badge]][Docker Hub URL] | |
[![Apache License Badge]][Apache License, Version 2.0] | |
__Aristotle__ is an automatic text to speech application that takes an Ancient Greek excerpt as input and generates a | |
downloadable audio for language learner for practice speaking in Ancient Greek. Aristotle generates speech using the | |
[OpenAI's text-to-speech API](https://platform.openai.com/docs/guides/text-to-speech). | |
The app is available on [🤗 Hugging Face space][Hugging Face space URL]. Please check it out. | |
A Docker image is also available: | |
```console | |
docker run -d --name aristotle -p 7860:7860 jack20191124/aristotle | |
``` | |
When container is up and running, visit app at [http://localhost:7860](http://localhost:7860). | |
How Does It Work | |
---------------- | |
Ancient Greek is a phonetically-lost language, because no one knows the correct pronunciation of such an ancient | |
language. __A lack of audio content is a major hurdle to learning Ancient Greek__. So I decided to tackle this problem | |
with NLP. | |
OpenAI will read Ancient Greek text with a modern Greek pronunciation. What's different about OpenAI from other | |
Text-to-Speech tools is that OpenAI is unaffected by the different accents and breathing marks in Ancient Greek. It will | |
simply read the Ancient Greek text in modern pronunciation with the accents in the right places. Studying Ancient Greeek | |
with modern pronunciation is simply not satisfactory for me, though, so I started messing around with the text to see if | |
I could get the pronunciation closer to Erasmian/Attic/whatever we want to call it. We can simply replace letters in the | |
Greek words with Latin letters to try and get what we want. | |
Here is an example sentence. | |
This is the original text, which OpenAI will read in Modern Greek with no problem: | |
> Σόλων ἦν συνετώτατος πάντων τῶν Ἀθηναίων, τὴν γὰρ σοφίαν αὐτοῦ οὐ μόνον οἱ πολῖται ἐθαύμαζον, ἀλλὰ καὶ οἱ ἂλλοι | |
> Ἓλληνες πάντες, πολλοὶ δὲ καὶ τῶν βαρβάρων. | |
And here is the same but with letters replaced to try and get OpenAI to read in an "Attic" pronunciation: | |
> sόλωn en sunetώtαtος πάntωn tón aθenáiωn, tén γáρ sοφίan autu u μόnon hoi πολítαi eθáuμαζon, aλλá kái hoi áλλοi | |
> Héλλeneς πάnteς, πολλói δé kái tón βαρβάρωn. | |
A huge list of [letter replacements](./ancient-greek-phonemes.txt) has been made to try and imitate Attic pronunciation | |
as closely as possible. The result is pretty solid and is close enough to be useful for creating audio files for texts | |
where we don't have any audio recordings. | |
Development | |
----------- | |
### Running Locally | |
```console | |
git clone [email protected]:QubitPi/aristotle.git | |
cd aristotle | |
virtualenv .venv | |
source .venv/bin/activate | |
pip3 install -r requirements.txt | |
``` | |
To start the app: | |
```console | |
export SERVER_NAME=127.0.0.1 | |
python3 app.py | |
``` | |
The app will be available at [http://localhost:7860](http://localhost:7860) and the API docs at | |
[http://localhost:7860/?view=api](http://localhost:7860/?view=api) | |
### Docker | |
To build a Docker container of Aristotle, follow these steps: | |
1. Make sure Docker has been installed | |
2. Open a terminal and navigate to the project directory. | |
3. Run the following command to build the Docker image: | |
```consule | |
docker build -t jack20191124/aristotle . | |
``` | |
4. Wait for the build process to complete. | |
5. Once the build is finished, we can run the Docker container using the following command: | |
```console | |
docker run -it --name aristotle -p 7860:7860 jack20191124/aristotle | |
``` | |
6. Open up browser and navigate to [http://localhost:7860](http://localhost:7860) to access the space. | |
### Toubleshooting | |
#### `No matching distribution found for fastapi` While Executing `pip3 install -r requirements.txt` | |
This could be caused by one's proxy. Simply turn-off or switch proxy should work | |
License | |
------- | |
The use and distribution terms for [aristotle]() are covered by the [Apache License, Version 2.0]. | |
[Apache License Badge]: https://img.shields.io/badge/Apache%202.0-F25910.svg?style=for-the-badge&logo=Apache&logoColor=white | |
[Apache License, Version 2.0]: https://www.apache.org/licenses/LICENSE-2.0 | |
[Docker Pulls Badge]: https://img.shields.io/docker/pulls/jack20191124/aristotle?style=for-the-badge&logo=docker&color=2596EC | |
[Docker Hub URL]: https://hub.docker.com/r/jack20191124/aristotle | |
[GitHub workflow status badge]: https://img.shields.io/github/actions/workflow/status/QubitPi/aristotle/ci-cd.yaml?branch=master&style=for-the-badge&logo=github&logoColor=white&label=CI/CD | |
[GitHub workflow status URL]: https://github.com/QubitPi/aristotle/actions/workflows/ci-cd.yaml | |
[Hugging Face space badge]: https://img.shields.io/badge/Hugging%20Face%20Space-aristotle-FF9D00?style=for-the-badge&logo=huggingface&logoColor=white&labelColor=6B7280 | |
[Hugging Face space URL]: https://huggingface.co/spaces/QubitPi/aristotle | |
[Hugging Face sync status badge]: https://img.shields.io/github/actions/workflow/status/QubitPi/aristotle/ci-cd.yaml?branch=master&style=for-the-badge&logo=github&logoColor=white&label=Hugging%20Face%20Sync%20Up | |
[Hugging Face sync status URL]: https://github.com/QubitPi/aristotle/actions/workflows/ci-cd.yaml | |
[Python Version Badge]: https://img.shields.io/badge/Python-3.10-FFD845?labelColor=498ABC&style=for-the-badge&logo=python&logoColor=white | |