-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.py
94 lines (72 loc) · 2.72 KB
/
test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pyaudio
from pyaudio import PyAudio
import multiprocessing
from multiprocessing import Process
from scipy import fromstring, int16
# 音源定位を行うクラス
class SearchSoundSource():
def __init__(self, numUseChannel):
# PyAudioを初期化
self.audio = PyAudio()
# setup関数が呼ばれたらAudio機器関連のデータが格納される
self.streams = {}
# 使用するマイクの数
self.numUseChannel = numUseChannel + 1
# マイクの固有値を定義
self.chunk = 1024
self.FORMAT = pyaudio.paInt16
self.Rate = 16000
self.RECORD_SECONDS = 1
self.device_index = None
# Tamagoマイクを特定
for num in range(0, self.audio.get_device_count()):
if "TAMAGO" in self.audio.get_device_info_by_index(num)["name"]:
print("[*] Found Device!")
print(self.audio.get_device_info_by_index(num)["name"])
self.device_index = self.audio.get_device_info_by_index(num)["index"]
# デバッグ用
print(self.audio.get_device_info_by_index(self.device_index))
# たまごマイクの初期化
self.audioSetup()
def audioSetup(self):
# 使用するたまごマイクの設定
for num in range(1, self.numUseChannel):
self.streams[num] = (
self.audio.open(
format = self.FORMAT,
channels = num,
rate = self.Rate,
input = True,
#input_device_index = self.device_index,
frames_per_buffer = self.chunk
)
)
# 使用するたまごマイクが格納されているかの
# print(self.streams)
self.processSetup()
# 複数プロセスの設定
def processSetup(self):
# デバッグ
#for num in range(1, 9):
# process = Process(target=self.Power, args=(num, ))
# process.start()
for num in range(1, self.numUseChannel):
process = Process(target=self.readWave, args=(self.streams[num], ))
process.run()
process.terminate()
# デバッグ用
def Power(self, num):
for i in range(1, num):
for j in range(1, num):
for k in range(1, num):
print(i*j*k)
# 波形読み込み
def readWave(self, stream):
while True:
#print(stream.read(1024))
num_data=fromstring(stream.read(1024), dtype='int16')/32768.0
print(num_data)
if __name__ == "__main__":
test = SearchSoundSource(8)