python与html的websocket音频通讯2

这篇具有很好参考价值的文章主要介绍了python与html的websocket音频通讯2。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这一遍,写网页端传声音到python端走websocket。

不二话,上代码打样。
python音频服务端

#复制粘贴即可,细节自己百度,主要是跑通程序
import base64
import asyncio
import websockets
import cv2
import math
import np
import pyaudio
import wave
import time
import threading
import matplotlib.pyplot as plt

chunk = 4096# Record in chunks of 1024 samples
sample_format = pyaudio.paInt16 # 16 bits per sample
channels = 2 #两声道
fs = 44100  # Record at 44100 samples per second
p = pyaudio.PyAudio()  # 创建音频对象

#image = cv2.imread("1.png")#image :是返回提取到的图片的值
#麦克风
micstream = p.open(format=sample_format,#音频输入流创建
                   channels=channels,
                   rate=fs,
                   frames_per_buffer=chunk,
                   input=True)
#喇叭
stream2 = p.open(format=sample_format,#音频输出流创建
                channels=channels,
                rate=fs,
                frames_per_buffer=chunk,
                output=True)


async def echo(websocket, path):
    print(websockets.serve)
    async for message in websocket:
        stream2.write(message)#播放 
        #m=micstream.read(chunk)#录音
        y=[]
        for i in range(1):#这里和上一篇数字不一样请注意。15次录音会阻塞线程。需要开新线程处理。范例用1次可忽略阻塞影响。
            m=micstream.read(chunk)
            y.append(m)
            
        if len(message )>1:await websocket.send(y)#发送录音

        
        
async def main():
    # start a websocket server
    async with websockets.serve(echo, "192.168.1.102", 8765):
        await asyncio.Future()  # run forever

asyncio.run(main())

html网页端,上代码
点击设备授权就开始跑代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no">
    <meta name="format-detection" content="telephone=no">
    <title>音量</title>
    <style>
	
        
		
    </style>
</head>
<body>
<div id="status">预备开始</div>
<audio id="video" src=""></audio>
<a onclick='aa()'>开始</a> <a onclick='bb()'>结束</a>
<script type="text/javascript">
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
            // 获取用户的 media 信息
             navigator.mediaDevices.getUserMedia({
	video: false,                                   
    audio: {
        sampleRate: 44100, // 采样率
        channelCount: 2,   // 声道
        volume: 1.0,        // 音量
		sampleBits:16
		}
    }).then((stream) => {
	var audioContext= new AudioContext();
	const socket = new WebSocket('ws://192.168.1.102:8765');
                // 将麦克风的声音输入这个对象
                mediaStreamSource = audioContext.createMediaStreamSource(stream);
                // 创建一个音频分析对象,采样的缓冲区大小为4096,输入和输出都是单声道
                scriptProcessor = audioContext.createScriptProcessor(4096,2,2);
                // 将该分析对象与麦克风音频进行连接
                mediaStreamSource.connect(scriptProcessor);
                // 此举无甚效果,仅仅是因为解决 Chrome 自身的 bug
                scriptProcessor.connect(audioContext.destination);
				//scriptProcessor.start();
                // 开始处理音频
				
				var c=[]
				var i2=0;
                scriptProcessor.onaudioprocess = function(e) {
                    // 获得缓冲区的输入音频,转换为包含了PCM通道数据的32位浮点数组
                    let buffer = e.inputBuffer.getChannelData(0);
                    let buffer1 = e.inputBuffer.getChannelData(1);
					var v = new Int16Array(buffer.length*2)//Int32Array(buffer.length*2);
					for (var i=0;i<buffer.length;i++){
					v[i2]=Math.trunc(buffer[i]*30000);
					i2++;
					v[i2]=Math.trunc(buffer1[i]*30000);
					i2++;
                    //v[i+1]=Math.trunc(buffer1[Math.floor(i/2)]*30000);
					}
					i2=0

					//c.push(v)
				//b= new Int16Array(v)
					console.log(c.length,v)
					socket.send(v)
					//if (c.length>10){socket.send(c);c=[]}


                };           
            }).catch((error) => {

            });
        } else {

        }

</script>
</body>
</html>

本例完。
再说说遥控机器人的思路吧,思想的巨人行动的矮子。对不起我是废物没有精力完成,虽然真的对于我来说很简单。
首先遥控和机器人的动作,可以拿来训练神经网络堆数据集。
慢慢可以实现AI化,让它成为我们的狗腿子那不是so easy。

网页端当机器人也还行把,网页通串口可以控制舵机,读取陀螺仪算姿态会发现很多功能是现成的。^ ^文章来源地址https://www.toymoban.com/news/detail-416755.html

到了这里,关于python与html的websocket音频通讯2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 之 Http 获取网页的 html 数据,并去掉 html 格式等相关信息

    目录 Python之 Http 获取网页的 html 数据,并去掉 html 格式等相关信息

    2024年02月13日
    浏览(39)
  • 第一个Python程序_获取网页 HTML 信息[Python爬虫学习笔记]

    使用 Python 内置的 urllib 库获取网页的 html 信息。注意,urllib 库属于 Python 的标准库模块,无须单独安装,它是 Python 爬虫的常用模块。 1) 获取响应对象 向百度(http://www.baidu.com/)发起请求,获取百度首页的 HTML 信息,代码如下: 上述代码会返回百度首页的响应对象, 其中

    2024年01月17日
    浏览(41)
  • 掌握Python的X篇_30_使用python解析网页HTML

    本篇将会介绍beutifulsoup4模块,可以用于网络爬虫、解析HTML和XML,对于没有接触过前端,不了解HTML是如何工作的,需要先解释一下什么事HTML。 网页中的各种布局等的背后都是非常简单的纯文本格式,那种格式称为 HTML 。 关于HTML不用刻意的去学习,所谓的HTML就是一堆 括起来

    2024年02月12日
    浏览(31)
  • websocket实现通讯——Java

    参考博客0 1)通知功能: 2)数据收集: 3)加密 认证: 4)反向控制钩子: 1、websocket则允许我们在一条ws连接上同时并发多个请求,即在A请求发出后A响应还未到达,就可以继续发出B请求。由于TCP的慢启动特性(新连接速度上来是需要时间的),以及连接本身的握手损耗,

    2024年02月15日
    浏览(48)
  • SignalR WebSocket通讯机制

    1、什么是SignalR ASP.NET SignalR 是一个面向 ASP.NET 开发人员的库,可简化向应用程序添加实时 Web 功能的过程。 实时 Web 功能是让服务器代码在可用时立即将内容推送到连接的客户端,而不是让服务器等待客户端请求新数据。 SignalR使用的三种底层传输技术分别是Web Socket, Server

    2024年02月06日
    浏览(47)
  • Netty 教程 – 实现WebSocket通讯

    WebSocket 协议是基于 TCP 的一种新的网络协议,它实现了浏览器与服务器 全双工(full-duplex)通信 ,允许 服务器主动发送信息给客户端 优点及作用 Http协议的弊端: Http协议为半双工协议。(半双工:同一时刻,数据只能在客户端和服务端一个方向上传输) Http协议冗长且繁琐 易

    2024年02月09日
    浏览(36)
  • 【websocket】Node+Vue2+WebSocket实现前后端通讯

    WebSocket是一个长连接,客户端可以给服务端发送消息,服务端也可以给客户端发送消息,是 全双工通信。 平时的前后端分离项目,是前端请求结果获取后端服务器数据,从而渲染到页面,服务端无法主动向客户端发起消息,某些需求场景下,一旦客户端 需要知道服务端的频

    2024年02月02日
    浏览(48)
  • C#搭建WebSocket服务实现通讯

    在学习使用websocket之前我们先了解一下websocket: WebSocket是一种在单个TCP连接上进行全双工通信的通信协议。与HTTP协议不同,它允许服务器主动向客户端发送数据,而不需要客户端明确地请求。这使得WebSocket非常适合需要实时或持续通信的应用程序,例如在线聊天、实时游戏

    2024年02月07日
    浏览(36)
  • SpringBoot+WebSocket实现即时通讯(四)

    紧接着上文《SpringBoot+WebSocket实现即时通讯(三)》 本博客姊妹篇 SpringBoot+WebSocket实现即时通讯(一) SpringBoot+WebSocket实现即时通讯(二) SpringBoot+WebSocket实现即时通讯(三) SpringBoot+WebSocket实现即时通讯(四) 用户管理:业务自己实现,暂从数据库添加 好友管理:添加好

    2024年02月21日
    浏览(43)
  • uniapp使用WebSocket实现即时通讯

    UniApp是一个基于Vue.js的跨平台应用开发框架,它允许开发者使用HTML、CSS和JavaScript构建多平台的移动应用程序。要使用WebSocket在UniApp中实现即时通讯功能,你可以按照以下步骤进行操作: 在UniApp项目的根目录下,找到 manifest.json 文件并打开它。 在 manifest.json 文件中,添加以下

    2024年02月06日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包