小车相加 语音对讲功能,

分为server 端 与 client

vi server.py

# -*- coding: utf-8 -*-
# create time    : 2020-12-30 15:37
# author  : CY
# file    : voice_server.py
# modify time:
import socket
import threadingclass Server:def __init__(self):self.ip = socket.gethostbyname(socket.gethostname())while True:try:self.port = 9808self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)self.s.bind((self.ip, self.port))breakexcept:print("Couldn't bind to that port")self.connections = []self.accept_connections()def accept_connections(self):self.s.listen(100)print('Running on IP: ' + self.ip)print('Running on port: ' + str(self.port))while True:c, addr = self.s.accept()self.connections.append(c)threading.Thread(target=self.handle_client, args=(c, addr,)).start()def broadcast(self, sock, data):for client in self.connections:if client != self.s and client != sock:try:client.send(data)except:passdef handle_client(self, c, addr):while 1:try:data = c.recv(1024)print(data)self.broadcast(c, data)except socket.error:c.close()server = Server()

server 可以部署在云端 或者 你想部署的地方

vi client.py

# -*- coding: utf-8 -*-
# create time    : 2021-01-06 15:52
# author  : CY
# file    : voice_client.py
# modify time:
import socket
import threading
import pyaudioclass Client:def __init__(self):self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)while 1:try:self.target_ip = '192.168.1.5'self.target_port = 9808self.s.connect((self.target_ip, self.target_port))breakexcept:print("Couldn't connect to server")chunk_size = 1024  # 512audio_format = pyaudio.paInt16channels = 1rate = 20000self.p = pyaudio.PyAudio()self.playing_stream = self.p.open(format=audio_format, channels=channels, rate=rate, output=True,frames_per_buffer=chunk_size)self.recording_stream = self.p.open(format=audio_format, channels=channels, rate=rate, input=True,frames_per_buffer=chunk_size)print("Connected to Server")# start threadsreceive_thread = threading.Thread(target=self.receive_server_data).start()self.send_data_to_server()def receive_server_data(self):while True:try:data = self.s.recv(1024)self.playing_stream.write(data)except:passdef send_data_to_server(self):while True:try:data = self.recording_stream.read(1024)self.s.sendall(data)except:passclient = Client()

场景:

server 计划搭建在云服务器上, 树莓派 运行 client.py  我的pc 运行 client.py 然后两个端就可以对讲了,

待完善:

增加账号等安全性的东东

python 实现实时语音对讲相关推荐

  1. 分享三个例程:使用ESP32做一个实时语音对讲机,MQTT协议实现公网对讲,ESP32-CAM 上传图像数据到网络。并附上例程链接。

    分享三个例程:使用ESP32做一个实时语音对讲机,MQTT协议实现公网对讲,ESP32-CAM 上传图像数据到网络.并附上例程链接.可以比对着看来学习NOW,MQTT使用方法.想办法把图像和语音代码融 ...

  2. python进阶——AI视觉实现口罩检测实时语音报警系统

    大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页:lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主lqj_本人擅长微信小程序,前端,vue,等方面的知识https:// ...

  3. 基于mind+实时模式实现语音对讲功能

    文章目录 前言 一.软硬件环境 二.使用步骤 1.配置运行环境 2.初始化模块 2.1 文字朗读模块 2.2 语音识别模块 3.编写程序 三.运行结果 四.总结 前言 本文使用到了mind+语音识别功 ...

  4. 基于能量或过零率的实时语音分割--学习笔记

    重要假设/基础:采集到的音频在起始处有一小段静音,长度为几百毫秒,这是我们估计静音阈值E0的基础,也是语音降噪的基础. 1. 能量energy 选区一定数量的音频帧,计算其平均能量值,然后加上一个经验 ...

  5. GB28181语音对讲/摄像头公网对讲指挥

    目录 概述 GB28181公网对讲特别说明 GB28181语音对讲原理​ 公网摄像头语音对讲解决方案 LiveMedia介绍 LiveMedia GB28181平台搭建 概述 摄像头语音对讲是在201 ...

  6. 安卓GB28181设备语音广播和语音对讲(Android GB28181 语音广播和语音对讲)实现

    安卓GB28181语音广播和语音对讲是一个非常重要的功能,很多场景都需要.语音对讲需要安卓有接收语音广播的功能.安卓还需要采集音频,并和视频一起打包到PS传给服务器,采集音频传服务器实现较容易.关键还 ...

  7. 安卓GB28181跨网段语音对讲

    GB28181语音对讲实际使用中遇到的主要问题是跨网段后rtp udp包不能穿透,针对这个问题有两套解决方案. 方案一,安卓端语音发送走实时视音频点播通道,把编码后的语音数据封装到PS包中,和视频帧一 ...

  8. GB28181系列笔记-语音对讲功能

    GB28181系列笔记-注册与保活 GB28181系列笔记-设备目录查询 GB28181系列笔记-实时流请求 GB28181系列笔记-历史流查询与请求 GB28181系列笔记-语音对讲功能 GB281 ...

  9. GB28181公网语音对讲

    GB28181公网语音对讲 语音对讲概述 公网对讲说明 语音对讲原理 公网语音对讲方案 视源GBS平台介绍 视源GBS核心功能 语音对讲概述 摄像头语音对讲是在2014版本提出来的,我这里详细写一遍国 ...

最新文章

  1. NeurIPS 2021 | 寻找用于变分布泛化的隐式因果因子
  2. WIN7 数据源配置问题(32位64位)
  3. Ansible中的角色使用
  4. 微信开发系列之十 - 在SAP C4C接收微信发送过来的服务请求回应
  5. jsr250-api_JSON处理的Java API(JSR-353)–流API
  6. CF758 D. Ability To Convert 细节处理字符串
  7. java 一个线程运行_Java并发(基础知识)—— 创建、运行以及停止一个线程
  8. 防止HALCON刷新图像窗口控件闪烁
  9. MFC 教程【3_CObject类】
  10. [转载] python处理数据列_Python中基于跨列的数据处理
  11. 【翻译】BCGControlBar Professional Edition for MFC v 29.0重大更新
  12. ps滤镜下载大全-PSCC 64位滤镜收集
  13. OTA频发的“大数据杀熟”,想要治你不容易?
  14. WEB安全(十六)单点登录的基本实现
  15. java用户登录注册
  16. 2022-04-19 Unity入门4——重要组件与API
  17. 利用setenv进行tomcat 内存设置
  18. bcd转ascii码 流程图_BCD码与ASC码互转 | 学步园
  19. Frame、Iframe、Frameset 的区别
  20. insmod: error inserting '***.ko': -1 Invalid parameters 真正原因以及解决方法

热门文章

  1. 卸载有管理密码的瑞星企业版客户端
  2. field ii:一些查看技巧
  3. VF控制和矢量控制的一些区别
  4. 20090726选股
  5. 2022年中国数字科技专题分析
  6. 电商直播方案主要有哪些内容?
  7. 我发现微信、知乎、B站,居然都暗藏彩蛋!
  8. Linux下安装lsof
  9. Bandizip安装教程
  10. 我的世界服务器玩家在线指令,我的世界指令大全:管理自己或者其他玩家及管理服务器指令...