声源定位专项_声源定位算法

声源定位专项_声源定位算法之前发布了一款声源定位机器人,但是其中还包括图像处理和超声波传感器,以及单片机开发的内容,对于专门想要研究声源定位的朋友可能过于复杂。这次把声源定位的程序摘取出来,并且保证可以独立运行(只需要放到镜像里项目文件夹下),给想研究声源定位的朋友参考。#!/usr/bin/envpythonimportsocketimportsysimportthreadingimportr…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

之前发布了一款声源定位机器人,但是其中还包括图像处理和超声波传感器,以及单片机开发的内容,对于专门想要研究声源定位的朋友可能过于复杂。

这次把声源定位的程序摘取出来,并且保证可以独立运行(只需要放到镜像里项目文件夹下),给想研究声源定位的朋友参考。

#!/usr/bin/env python
import socket
import sys
import threading
import random
import os
import time
import struct

import Image, StringIO
import numpy as np


from voice_engine.source import Source
from voice_engine.channel_picker import ChannelPicker
from voice_engine.doa_respeaker_4mic_array import DOA
from pixels import pixels

import datetime


exit_now = 0

last_movement_timestamp = datetime.datetime.now()


def exit_signal_handle(sig,stack_frame):
    global exit_now
    print "EXIT sig"
    exit_now = 1


def main():
    global last_movement_timestamp
    src = Source(rate=16000, channels=4, frames_size=320)
    doa = DOA(rate=16000)
    src.link(doa)
    src.recursive_start()


    while exit_now == 0:
        try:
            time.sleep(1)
            current_timestamp = datetime.datetime.now()
            if ((current_timestamp - last_movement_timestamp).seconds > 2):
                position, amplitute = doa.get_direction()
                if amplitute > 2000:
                    pixels.wakeup(position)
                    print "doa",amplitute,position
                    if position > 0  and position < 180:
                        print "pivot right"
                        time.sleep(position/200)
                    elif position >= 180 and position < 360:
                        print "pivot left"
                        position = 360 - position
                        time.sleep(position/200)
                    time.sleep(2)
                else:
                    pixels.speak()
            else:
                pixels.think()
        except:
            print "doa", sys.exc_info()
    src.recursive_stop()

if __name__ == "__main__":
    main()

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190779.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 华为裁员34岁以上程序员,90后的中年危机,即将在职场引爆

    华为裁员34岁以上程序员,90后的中年危机,即将在职场引爆去年,一条职场潜规则走红网络:不要大声责骂年轻人,他们会立刻辞职的,但是你可以往死里骂那些中年人,尤其是有车有房有娃的那些。真实感受到程序员的中年危机在中国,除了从BAT出来的牛人,一般经理层到35岁,总监层到40岁,往后机会真的会少很多了,不是你能不能干的问题,是别人不给机会你干的问题,不要想着什么外国人可以干到50、60,你就要死磕到底,希望后来者早有打算,不要到最后尴尬的时…

    2022年7月17日
    42
  • Pytest(6)重复运行用例pytest-repeat

    Pytest(6)重复运行用例pytest-repeat前言平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来。自动化运行用例时候,也会出现偶然的bug,可以针对单个用例,

    2022年8月6日
    4
  • 关于this指针

    关于this指针一个类的对象中实际只包含了该对象的数据成员信息,当我们创建了多个类的对象时,使对象1调用该类的成员函数,为什么可以改变对象1中的信息,而不去设置其他对象的信息?成员函数在类中只有一份,所有该类的对象共同使用,编译器是如何识别并处理的呢?编译器识别一个类分为三步:1.识别类的类名2.识别类的成员变量3.识别类的成员函数并对成员函数进行修改修改方式:成员函数有一个隐藏…

    2022年5月16日
    51
  • 处理js乱码

    处理js乱码1.将time.js编码格式更改外2.在Tomcat设置VM-OPTION选项为-Dfile.encoding=utf-8

    2022年6月12日
    43
  • 第七次人口普查数据可视化分析实战——基于pyecharts(含数据和源码)[通俗易懂]

    第七次人口普查数据可视化分析实战——基于pyecharts(含数据和源码)[通俗易懂]第七次人口普查数据分析实战?个人主页:JoJo的数据分析历险记?个人介绍:小编大四统计在读,目前保研到统计学top3高校继续攻读统计研究生?如果文章对你有帮助,欢迎✌关注、?点赞、✌收藏、?订阅专栏国家统计局发布的第七次人口普查数据较为宏观,未能较好的体现各地区人口指标的分布情况。本文基于Pyecharts对各地区人口普查数据的分布情况进行可视化分析?。

    2022年6月27日
    31
  • heap和stack区别Java_Java中Heap与Stack的区别

    heap和stack区别Java_Java中Heap与Stack的区别1)Heap是Stack的一个子集.——扩展—>从内存观点考虑。优化2)Stack存取速度仅次于寄存器,存储效率比heap高,可共享存储数据,可是其中数据的大小和生存期必须在运行前肯定。spa3)Heap是运行时可动态分配的数据区,从速度看比Stack慢,Heap里面的数据不共享,大小和生存期均可以在运行时再肯定。指针4)new关键字是运行时在Heap里面建立对象,每ne…

    2025年8月1日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号