python 实现实时语音对讲
小车相加 语音对讲功能,
分为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 实现实时语音对讲相关推荐
- 分享三个例程:使用ESP32做一个实时语音对讲机,MQTT协议实现公网对讲,ESP32-CAM 上传图像数据到网络。并附上例程链接。
分享三个例程:使用ESP32做一个实时语音对讲机,MQTT协议实现公网对讲,ESP32-CAM 上传图像数据到网络.并附上例程链接.可以比对着看来学习NOW,MQTT使用方法.想办法把图像和语音代码融 ...
- python进阶——AI视觉实现口罩检测实时语音报警系统
大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页:lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主lqj_本人擅长微信小程序,前端,vue,等方面的知识https:// ...
- 基于mind+实时模式实现语音对讲功能
文章目录 前言 一.软硬件环境 二.使用步骤 1.配置运行环境 2.初始化模块 2.1 文字朗读模块 2.2 语音识别模块 3.编写程序 三.运行结果 四.总结 前言 本文使用到了mind+语音识别功 ...
- 基于能量或过零率的实时语音分割--学习笔记
重要假设/基础:采集到的音频在起始处有一小段静音,长度为几百毫秒,这是我们估计静音阈值E0的基础,也是语音降噪的基础. 1. 能量energy 选区一定数量的音频帧,计算其平均能量值,然后加上一个经验 ...
- GB28181语音对讲/摄像头公网对讲指挥
目录 概述 GB28181公网对讲特别说明 GB28181语音对讲原理 公网摄像头语音对讲解决方案 LiveMedia介绍 LiveMedia GB28181平台搭建 概述 摄像头语音对讲是在201 ...
- 安卓GB28181设备语音广播和语音对讲(Android GB28181 语音广播和语音对讲)实现
安卓GB28181语音广播和语音对讲是一个非常重要的功能,很多场景都需要.语音对讲需要安卓有接收语音广播的功能.安卓还需要采集音频,并和视频一起打包到PS传给服务器,采集音频传服务器实现较容易.关键还 ...
- 安卓GB28181跨网段语音对讲
GB28181语音对讲实际使用中遇到的主要问题是跨网段后rtp udp包不能穿透,针对这个问题有两套解决方案. 方案一,安卓端语音发送走实时视音频点播通道,把编码后的语音数据封装到PS包中,和视频帧一 ...
- GB28181系列笔记-语音对讲功能
GB28181系列笔记-注册与保活 GB28181系列笔记-设备目录查询 GB28181系列笔记-实时流请求 GB28181系列笔记-历史流查询与请求 GB28181系列笔记-语音对讲功能 GB281 ...
- GB28181公网语音对讲
GB28181公网语音对讲 语音对讲概述 公网对讲说明 语音对讲原理 公网语音对讲方案 视源GBS平台介绍 视源GBS核心功能 语音对讲概述 摄像头语音对讲是在2014版本提出来的,我这里详细写一遍国 ...
最新文章
- NeurIPS 2021 | 寻找用于变分布泛化的隐式因果因子
- WIN7 数据源配置问题(32位64位)
- Ansible中的角色使用
- 微信开发系列之十 - 在SAP C4C接收微信发送过来的服务请求回应
- jsr250-api_JSON处理的Java API(JSR-353)–流API
- CF758 D. Ability To Convert 细节处理字符串
- java 一个线程运行_Java并发(基础知识)—— 创建、运行以及停止一个线程
- 防止HALCON刷新图像窗口控件闪烁
- MFC 教程【3_CObject类】
- [转载] python处理数据列_Python中基于跨列的数据处理
- 【翻译】BCGControlBar Professional Edition for MFC v 29.0重大更新
- ps滤镜下载大全-PSCC 64位滤镜收集
- OTA频发的“大数据杀熟”,想要治你不容易?
- WEB安全(十六)单点登录的基本实现
- java用户登录注册
- 2022-04-19 Unity入门4——重要组件与API
- 利用setenv进行tomcat 内存设置
- bcd转ascii码 流程图_BCD码与ASC码互转 | 学步园
- Frame、Iframe、Frameset 的区别
- insmod: error inserting '***.ko': -1 Invalid parameters 真正原因以及解决方法