примерный код для выполнения данного алгоритма:
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
Запустите код, следуя инструкциям в консоли, и вы сможете записать речь, обработать данные и увидеть результат на графике. Вы можете менять параметры записи и значения сдвига для экспериментов.
Комментарии
Отправить комментарий