Как можно создать спектрограмму звука с помощью языка программирования Python?

Как я могу добавить в программу функцию спектрограммы, используя TTS (text-to-speech)?

У меня уже есть программа для TTS:
```
import speech_recognition as sr
import pyttsx3

# Создаем объекты для синтеза речи
recognizer = sr.Recognizer()
engine = pyttsx3.init()

# Функция для преобразования текста в речь
def speak(text):
    engine.say(text)
    engine.runAndWait()

# Основной цикл работы помощника
while True:
    speak(input("Введите текст"))
```

Как я могу добавить функцию спектрограммы в эту программу? Я не уверен, как это сделать.
  • 8 октября 2023 г. 13:17
Ответы на вопрос 2
Для создания спектрограммы звука воспользуйтесь библиотекой librosa. Вот пример, как добавить функцию спектрограммы к вашей программе:

```python
import speech_recognition as sr
import pyttsx3
import librosa
import librosa.display
import matplotlib.pyplot as plt

# Создаем объекты для синтеза речи
recognizer = sr.Recognizer()
engine = pyttsx3.init()

# Функция для преобразования текста в речь
def speak(text):
    engine.say(text)
    engine.runAndWait()

# Функция для отображения спектрограммы звука
def plot_spectrogram(file_path):
    y, sr = librosa.load(file_path)
    spectrogram = librosa.feature.melspectrogram(y, sr=sr)
    plt.figure(figsize=(10, 4))
    librosa.display.specshow(librosa.power_to_db(spectrogram, ref=np.max), y_axis='mel', fmax=8000, x_axis='time')
    plt.colorbar(format='%+2.0f dB')
    plt.title('Spectrogram')
    plt.show()

# Основной цикл работы помощника
while True:
    text = input("Введите текст: ")
    speak(text)
    # Сохраняем речевой файл, который преобразуется в спектрограмму
    speech_file = "speech.wav"
    with sr.AudioFile(speech_file) as source:
        audio = recognizer.record(source)
    recognizer.recognize_sphinx(audio)
    plot_spectrogram(speech_file)
```

В этом примере после ввода текста программа будет синтезировать речь и сохранять ее в файл "speech.wav". Затем этот файл будет преобразован в спектрограмму с помощью функции `plot_spectrogram`.
1. Создайте голосовой отрезок с помощью библиотеки pyttsx3.

2. Сохраните голосовой отрезок в файл с помощью метода save_to_file().

3. Раскодируйте файл из формата mp3 в wav.

4. Создайте временный файл wav и экспортируйте в него раскодированный аудиоотрезок.

5. Считайте данные из wav файла с помощью функции wavfile.read() и сохраните в переменных FS и data.

6. Постройте спектрограмму используя функцию specgram() из библиотеки matplotlib.

7. Отобразите спектрограмму с помощью функции show().

8. Получили спектрограмму аудиоотрезка через использование описанных выше шагов.
Похожие вопросы