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

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


相关推荐

  • Apifox(2)快速上手apifox

    Apifox(2)快速上手apifox快速上手使用场景Apifox是接口管理、开发、测试全流程集成工具,使用受众为整个研发技术团队,主要使用者为前端开发、后端开发和测试人员。前端开发接口文档管理接口数据Mock接口调试前

    2022年7月30日
    10
  • com.google.android.xmppService与com.google.android.gtalkservice

    com.google.android.xmppService与com.google.android.gtalkservicecom.google.android.xmppService被更名com.google.android.gtalkservice,并且com.google.android.gtalkservice已经从release的SDK中拿掉了,所以我们在SDK找不到相关的信息的。com.google.android.gtalkservice是GTalk用到的service.GTalk是基于XMPP协议的。…

    2022年10月16日
    3
  • Hive系列 (六):Hive数据类型转换

    Hive系列 (六):Hive数据类型转换hive 数据类型转换规则及转换原则 日期类型转换

    2025年8月13日
    4
  • 什么是泛型?为什么要用泛型?什么是泛型擦除?泛型擦除的过程?

    什么是泛型?为什么要用泛型?什么是泛型擦除?泛型擦除的过程?泛型:本质是参数化类型。为什么要使用?创建集合的时候,往集合里面添加数据,再次取出时,集合会忘记这数据类型,该对象的编译类型就会变成Object类型,否则如果想要变回原来的数据类型的时候,就要强制进行转换。创建集合的时候,我们就指定集合类型,避免这个过程。泛型擦除?Java的泛型处理过程都是在编译器中进行的,编译器首先会生成bytecode码,这个过程是不包括泛型类型,泛型类型在编译的时候是

    2022年6月18日
    35
  • 服务器安装黑苹果系统,黑苹果 单系统安装教程

    服务器安装黑苹果系统,黑苹果 单系统安装教程黑苹果单系统安装教程[2021-02-1509:58:46]简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace(“/(\s|\&nbsp\;| |\xc2\xa0)/”,””,strip_tags($val));”方法去除所有nbsp即可。推荐:《PHP视频教中国网科技7月24日讯今日,工信部发布今年第三批侵害用户权益行为的A…

    2022年5月5日
    114
  • uml用例图详解_uml模型图

    uml用例图详解_uml模型图用例图的含义由参与者(Actor)、用例(UseCase)以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图。其中用例和参与者之间的对应关系又叫做通讯关联(CommunicationAssociation)。用例图的作用用例图是需求分析中的产物,主要作用是描述参与者与和用例之间的关系,帮助开发人员可视化地了解系统的功能。借助于用例图,系统用户、系统分析人员、系统设计人员、领…

    2025年9月27日
    4

发表回复

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

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