当前位置: 首页 > news >正文

安全语音通信系统python

安全语音通信系统

项目简介

安全语音通信系统是一个基于UDP协议的实时加密语音通信应用,采用客户端-服务器架构设计。系统支持用户注册、登录、加密语音通话,以及通话录制等功能。通过采用先进的AES加密技术(基于Fernet实现),确保通信内容的安全性和私密性,可用于需要保密的语音通信场景。

功能特点

核心功能

  • 用户管理:支持用户注册、登录和登出
  • 加密语音通话:实时、低延迟的语音通信,支持点对点加密
  • 安全性保障:采用Fernet加密(基于AES-128-CBC),每个用户拥有独立密钥
  • 密钥交换:基于服务器中转的安全密钥交换机制
  • 音频处理:采用DCT(离散余弦变换)进行音频压缩处理
  • 通话录制:支持录制原始音频、DCT变换后数据及加密数据

技术特点

  • NAT穿透:支持服务器中继模式,解决NAT网络环境下的连接问题
  • 音频优化:高频衰减、噪声阈值和动态范围压缩,提升音质
  • 设备兼容性:自动适配多种音频设备,支持不同通道配置
  • 网络诊断:内置网络连接测试和问题诊断功能
  • 心跳机制:保持连接活跃,及时检测断线情况

系统架构

系统由三部分组成:

  1. 客户端(improved_client.py)

    • 用户界面:基于Tkinter构建的图形用户界面
    • 音频处理:使用numpy和scipy进行音频采集、变换和播放
    • 加密模块:使用cryptography.fernet实现端到端加密
    • 通信模块:基于UDP协议的网络通信
  2. 服务器(improved_server.py)

    • 用户管理:用户注册、身份验证和状态维护
    • 会话管理:呼叫请求处理和通话会话维护
    • 密钥分发:安全地分发和交换用户密钥
    • 数据中继:可选的音频数据中继功能(解决NAT问题)
  3. 数据库

    • SQLite数据库(voice_users.db):存储用户账号、密码和加密密钥

数据流程

发送端流程

  1. 采集音频 →
  2. DCT变换(数据压缩)→
  3. 加密(可选)→
  4. 添加帧头(时间戳、序列号)→
  5. UDP发送

接收端流程

  1. 接收UDP数据包 →
  2. 解密(可选)→
  3. 解析帧头 →
  4. 逆DCT变换 →
  5. 音频输出

录音逻辑

  • 原始音频数据写入raw_recorder
  • DCT变换后的数据写入dct_recorder
  • 加密后的数据写入encrypted_recorder(若启用加密)
  • 接收到的DCT数据(解密后的)写入received_dct_recorder
  • 经过逆DCT变换后的原始音频写入received_raw_recorder

安装与配置

依赖库

tkinter
socket
threading
time
datetime
queue
wave
numpy
scipy
sounddevice
cryptography
base64
traceback
netifaces
sqlite3

安装步骤

Mac版本
  1. 安装Python 3.7或更高版本(如果尚未安装)

    brew install python3
    
  2. 安装依赖库

    pip3 install numpy scipy sounddevice cryptography netifaces
    
  3. 下载项目文件

    • improved_client.py:客户端程序
    • improved_server.py:服务器程序
Windows版本
  1. 安装Python 3.7或更高版本(从python.org下载)

  2. 安装依赖库

    pip install numpy scipy sounddevice cryptography netifaces
    
  3. 下载项目文件

    • improved_client.py:客户端程序
    • improved_server.py:服务器程序

使用方法

启动服务器

  1. 打开终端或命令提示符,切换到项目目录
  2. 运行服务器程序
    python improved_server.py
    
  3. 在服务器界面设置监听地址和端口(默认为0.0.0.0:9999)
  4. 点击"启动服务"按钮

客户端使用

  1. 运行客户端程序
    python improved_client.py
    
  2. 连接服务器
    • 输入服务器IP地址和端口
    • 注册新账号或使用现有账号登录
  3. 进行通话
    • 输入目标用户ID并点击"开始通话"
    • 等待对方接受通话请求
    • 通话过程中可选择启用加密和录音功能
    • 点击"结束通话"结束当前通话

音频设备配置

  • 在配置选项中选择合适的输入设备(麦克风)和输出设备(扬声器)
  • 系统会自动适配设备的通道数和采样率

安全机制

密钥管理

  1. 用户密钥生成:注册时为每个用户生成唯一的Fernet密钥
  2. 密钥保护:用户密钥使用预共享密钥(PRE_SHARED_KEY)加密后存储在数据库中
  3. 密钥交换:通话建立时,服务器负责安全地交换双方密钥

通话加密

  • 发送方使用自己的密钥加密音频数据
  • 接收方使用发送方的密钥解密接收到的数据
  • 全程端到端加密,即使数据经过服务器中继也无法被解密

高级功能

网络诊断

点击"网络诊断"按钮,系统会执行以下检查:

  • 检测可用网络接口
  • 测试与服务器的连接
  • 显示诊断结果

用户状态查询

  • 使用"检查状态"按钮可查询特定用户是否在线
  • 使用"获取在线用户"按钮获取当前所有在线用户列表

音频优化参数

可在代码中调整以下参数以优化音频质量:

  • blocksize:音频块大小,影响延迟
  • fs:采样率,默认44100Hz
  • high_freq_attenuation:高频衰减系数
  • noise_threshold:噪声阈值
  • dynamic_range:动态范围压缩系数

常见问题与解决方案

连接问题

  • 问题:无法连接到服务器
  • 解决方案
    • 检查服务器是否正常运行
    • 确认IP地址和端口是否正确
    • 检查网络连接和防火墙设置

音频问题

  • 问题:听不到对方声音或对方听不到自己
  • 解决方案
    • 检查音频设备选择是否正确
    • 确认麦克风和扬声器工作正常
    • 尝试重新建立通话连接

加密问题

  • 问题:启用加密后无法正常通话
  • 解决方案
    • 确保双方使用的预共享密钥相同
    • 检查密钥交换过程是否成功
    • 尝试重新登录并建立通话

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

相关文章:

  • AGI大模型(33):LangChain之Memory
  • python炸鱼船
  • 【成品论文】2025年电工杯数学建模竞赛B题50页保奖成品论文+matlab/python代码+数据集等(后续会更新)
  • 第十七次CCF-CSP算法(含C++源码)
  • Linux10正式版发布,拥抱AI了!
  • Python性能优化利器:__slots__的深度解析与避坑指南
  • 分布式锁总结
  • MSP430G2553 USCI模块串口通信
  • 【疑难杂症】Vue前端下载文件无法打开 已解决
  • S32K开发环境搭建详细教程(一、S32K IDE安装注册)
  • Spring 框架的JDBC 模板技术
  • 负载均衡笔记
  • python word 读取section.page_height参数错误
  • HarmonyOS:相机选择器
  • Halcon 单目相机标定测量
  • [python]opencv从源码编译python版本发现不生成cv2.pyd
  • 游戏引擎学习第309天:用于重叠检测的网格划分
  • 考研408《计算机组成原理》复习笔记,第二章(3)数值数据的运算和存储(定点数计算)
  • 实战教程:基于Vue.js与Django REST Framework的任务管理SPA开发全流程
  • WPF按钮Radius化
  • 做市场调查的网站免费/福州关键词排名优化
  • 新农村建设管理网站/seo排名优化工具
  • 机械加工网入网/网站seo报价
  • 公安网站建设素材/seo关键词快速排名前三位
  • 云南省建设厅网站首页/四川成都最新消息
  • king 主题WordPress/seo是什么意思