Привет, я пишу сейчас конспекты и мне хотелось бы программу, которая бы диктовала мне конспект.
Для синтеза речи можно использовать библиотеку `pip install edge-tts`
Она предоставляет быструю и качественную генерацию речи.
Вот README.md у edge-tts:
```
# edge-tts

`edge-tts` is a Python module that allows you to use Microsoft Edge's online text-to-speech service from within your Python code or using the provided `edge-tts` or `edge-playback` command.

## Installation

To install it, run the following command:

    $ pip install edge-tts

If you only want to use the `edge-tts` and `edge-playback` commands, it would be better to use pipx:

    $ pipx install edge-tts

## Usage

### Basic usage

If you want to use the `edge-tts` command, you can simply run it with the following command:

    $ edge-tts --text "Hello, world!" --write-media hello.mp3 --write-subtitles hello.vtt

If you wish to play it back immediately with subtitles, you could use the `edge-playback` command:

    $ edge-playback --text "Hello, world!"

Note the above requires the installation of the `mpv` command line player.

All `edge-tts` commands work in `edge-playback` as well.

### Changing the voice

If you want to change the language of the speech or more generally, the voice. 

You must first check the available voices with the `--list-voices` option:

    $ edge-tts --list-voices
    Name: Microsoft Server Speech Text to Speech Voice (af-ZA, AdriNeural)
    ShortName: af-ZA-AdriNeural
    Gender: Female
    Locale: af-ZA

    Name: Microsoft Server Speech Text to Speech Voice (am-ET, MekdesNeural)
    ShortName: am-ET-MekdesNeural
    Gender: Female
    Locale: am-ET

    Name: Microsoft Server Speech Text to Speech Voice (ar-EG, SalmaNeural)
    ShortName: ar-EG-SalmaNeural
    Gender: Female
    Locale: ar-EG

    Name: Microsoft Server Speech Text to Speech Voice (ar-SA, ZariyahNeural)
    ShortName: ar-SA-ZariyahNeural
    Gender: Female
    Locale: ar-SA

    ...

    $ edge-tts --voice ar-EG-SalmaNeural --text "مرحبا كيف حالك؟" --write-media hello_in_arabic.mp3 --write-subtitles hello_in_arabic.vtt

### Custom SSML

Support for custom SSML has been removed since 5.0.0 because Microsoft has taken the initiative to prevent it from working. You cannot use custom SSML anymore.

### Changing rate, volume and pitch

It is possible to make minor changes to the generated speech.

    $ edge-tts --rate=-50% --text "Hello, world!" --write-media hello_with_rate_halved.mp3 --write-subtitles hello_with_rate_halved.vtt
    $ edge-tts --volume=-50% --text "Hello, world!" --write-media hello_with_volume_halved.mp3 --write-subtitles hello_with_volume_halved.vtt
    $ edge-tts --pitch=-50Hz --text "Hello, world!" --write-media hello_with_pitch_halved.mp3 --write-subtitles hello_with_pitch_halved.vtt

In addition, it is required to use `--rate=-50%` instead of `--rate -50%` (note the lack of an equal sign) otherwise the `-50%` would be interpreted as just another argument.

### Note on the `edge-playback` command

`edge-playback` is just a wrapper around `edge-tts` that plays back the generated speech. It takes the same arguments as the `edge-tts` option.
```

Вот пример использования этой библиотеки:
```py
"""
Basic audio streaming example.

This example shows how to stream the audio data from the TTS engine,
and how to get the WordBoundary events from the engine (which could
be ignored if not needed).

The example streaming_with_subtitles.py shows how to use the
WordBoundary events to create subtitles using SubMaker.
"""

import asyncio

import edge_tts

TEXT = "Hello World!"
VOICE = "en-GB-SoniaNeural"
OUTPUT_FILE = "test.mp3"


async def amain() -> None:
    """Main function"""
    communicate = edge_tts.Communicate(TEXT, VOICE)
    with open(OUTPUT_FILE, "wb") as file:
        async for chunk in communicate.stream():
            if chunk["type"] == "audio":
                file.write(chunk["data"])
            elif chunk["type"] == "WordBoundary":
                print(f"WordBoundary: {chunk}")


if __name__ == "__main__":
    asyncio.run(amain())
```
Голоса:
```py
voices = await VoicesManager.create()
    voice = voices.find(Gender="Male", Language="es")
```
Простой синтез в файл:
```py
    communicate = edge_tts.Communicate(TEXT, random.choice(voice)["Name"])
    await communicate.save(OUTPUT_FILE)
```.

Это что касается зачитывания.
Сделай умный алгоритм, который бы зачитывал по словам весь этот текст с возможностью динамически менять скорость.
При ее изменении будет меняться сама скорость у синтеза, но в основном, будет просто увеличиваться пауза между словами.

Сделай это через программу с интерфейсом на tkinter.
Там должно быть текстовое поле, в которое мы должны вставить json с конспектом.
Придумай схему записи json конспекта, чтобы программа различала: Заголовки, Определения, Перечисления(через точку или через - ) и то, что обычно является форматированием для легкости чтения. Мне вот надо, чтобы если там было, скажем, двоеточие и перечисление, то мне программа бы сказала - "Сейчас двоеточие, а потом перечисление идет.". Когда по контексту мы завершим перечисление, то мне она так и скажет.
То есть, формат json должен быть с большим количеством вложений, если надо. То есть может быть спокойно перечисление в перечислении и так несколько раз. В этом случае нужно произносить информацию о перечислении так, чтобы я понял, что это именно перечисление в элементе существующего перечисления, а не просто конец текущего. Сделай все красиво и аккуратно и интеллектуально.

В интерфейсе, кроме текстового поля, должен быть еще ползунок скорости, кнопка воспроизведения и что-то еще.
Сделай как-то так, чтобы можно было скипать и перематывать. Я пока не знаю как это реализовать, т.к. все это генерируется постепенно, но попробуй.


Как ты понимаешь, сам я этот json составлять не буду. Я хочу для этого использовать LLM(отдельно, вне программы), которой я скину фотку конспекта, определенный системный промпт, а она уже вернет json, который я вставлю в программу.
Напиши еще этот самый системный промпт. Примени все свои навыки промпт-инженера, чтобы не было двусмысленности и она все поняла. Также, сделай акцент, чтобы она сама ничего не придумывала и писала СТРОГО то, что в тексте. Используй слова КАПСОМ, чтобы она делала на это акцент, т.к. для LLM это эквивалентно крику.

Приведи ПОЛНЫЙ код проекта!

Спасибо!