примерный код для выполнения данного алгоритма:


import numpy as np

import matplotlib.pyplot as plt

import sounddevice as sd

import wave


# Параметры записи

sample_rate = 44100 # Часота дискретизации

duration = 5 # Длительность записи в секундах

filename = 'audio_neg.wav' # Имя файла для сохранения негативной записи


# Функция для записи аудио

def record_audio(filename, duration, sample_rate):

    print("Запись... Пожалуйста, говорите")

    audio_data = sd.rec(int(sample_rate * duration), samplerate=sample_rate, channels=1, dtype='int16')

    sd.wait() # Ожидание завершения записи

    print("Запись завершена.")


    # Сохранение записи в файл

    with wave.open(filename, 'wb') as wf:

        wf.setnchannels(1) # Моно

        wf.setsampwidth(2) # 2 байта (16 бит)

        wf.setframerate(sample_rate)

        wf.writeframes(audio_data.tobytes())


# Функция для создания позитивной копии

def create_positive(neg_audio):

    return np.where(neg_audio == 0, 1, 0) # Заменяем 0 на 1 и наоборот


# Функция для универсального кода и визуализации

def visualize_and_code(neg_audio, pos_audio, shift):

    length = max(len(neg_audio), len(pos_audio))


    # Объединение двух аудиопотоков с учетом сдвига

    combined_audio = np.zeros(length)

    combined_audio[:len(neg_audio)] += neg_audio

    combined_audio[shift:shift + len(pos_audio)] += pos_audio


    # Равномерный код

    binary_code = np.where(combined_audio > 0, 1, 0) # Бинарный код: если > 0, то 1, иначе 0

    return binary_code


# Визуализация графика

def plot_binary_code(binary_code):

    plt.figure(figsize=(10, 4))

    plt.step(np.arange(len(binary_code)), binary_code, where='post', color='blue', alpha=0.5)

    plt.title("Равномерный код")

    plt.xlabel("Время (отсчет)")

    plt.ylabel("Значение")

    plt.grid()

    plt.show()


# Основная логика

if __name__ == "__main__":

    record_audio(filename, duration, sample_rate)


    # Загрузка запрещенных данных

    with wave.open(filename, 'rb') as wf:

        neg_audio = np.frombuffer(wf.readframes(wf.getnframes()), dtype=np.int16)

        neg_audio = np.where(neg_audio > 0, 1, 0) # Преобразуем в бинарный вид


    pos_audio = create_positive(neg_audio)


    # Заданный сдвиг (в пределах длины записи)

    shift = 1000 # Пример сдвига на 1000 отсчетов (можно настроить по желанию)


    binary_code = visualize_and_code(neg_audio, pos_audio, shift)


    plot_binary_code(binary_code)


Копировать

Пояснения:

Запись аудио: Используется sounddevice для записи звука и сохраняется в формате WAV.

Создание позитивной копии: Функция create_positive меняет 0 на 1 и 1 на 0.

Объединение записей: Записи объединяются с учетом заданного сдвига.

Визуализация: Полученный бинарный код отображается на графике.

Установка необходимых библиотек:

Не забудьте установить нужные библиотеки, если они не установлены:


pip install numpy matplotlib sounddevice

Запустите код, следуя инструкциям в консоли, и вы сможете записать речь, обработать данные и увидеть результат на графике. Вы можете менять параметры записи и значения сдвига для экспериментов.



Комментарии

Популярные сообщения из этого блога

Распознавание речи без библиотек

Усилитель на микросхеме ILA7056. - Радиолюбитель - это просто