automatic recording program connects the radio station, if someone talking channel automatically recorded
all the recording stored in an audio file of a day, will record the start time, stop time, duration, the starting position in the recording, convenient and rapid positioning, no one spoke automatically stop recording, saving disk,
Multithreading technology, even if the program crashes the recording file will not be damaged
= = = = = = = = = =
Warning:
Please abide by the Radio Management Regulations of the People’s Republic of China when using this procedure. > Regulations of the People’s Republic of China on Radio Administration
This procedure is only used for learning and communication, and shall not be used for illegal purposes
import threading
import pyaudio
import copy
import math
import time
import numpy
import wave
localtime = time.localtime()
localtimestr = time.strftime("%Y-%m-%d-%H-%M-%S",localtime)
#ltime = time.time()
line = 0
class RecordThread(threading.Thread):
def __init__(self, audiofile="C:/Users/Public/RE/"+localtimestr+".wav"):
threading.Thread.__init__(self)
self.bRecord = True
self.rr = True
self.audiofile = audiofile
self.chunk = 1024
self.format = pyaudio.paInt16
self.channels = 1
self.rate = 16000
def run(self):
#print("RUN....")
audio = pyaudio.PyAudio()
wavfile = wave.open(self.audiofile, 'wb')
wavfile.setnchannels(self.channels)
wavfile.setsampwidth(audio.get_sample_size(self.format))
wavfile.setframerate(self.rate)
wavstream = audio.open(format=self.format,
channels=self.channels,
rate=self.rate,
input=True,
frames_per_buffer=self.chunk)
global xx
global yy
xx = 0
yy = 0
global line
alltime = 0
ntime1 = 0
ntime2 = 0
starttime = 0
stoptime = 0
timediff = 0
while self.bRecord:
data = wavstream.read(self.chunk)
wavdata = numpy.fromstring(data,dtype=numpy.short)
M = []
for i in range(0,len(wavdata),16000):
M.append(wavdata[i:i+16000]/10)
M=map(abslist,M)
sound = list(map(mean,M))
if sound[0] > 50:
#print("over")
#Write
xx = 1
wavfile.writeframes(data)
else:
xx = 0
if xx > yy:
yy = 1
#START
starttime = time.time()
alltime = round(alltime + timediff,3)
log("StartTime: "+time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(starttime))+" 开始时间: "+timestr(alltime))
print("StartTime: "+time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(starttime))+" 开始时间: "+timestr(alltime))
if xx < yy:
yy = 0
#STOP
stoptime = time.time()
timediff = round(stoptime - starttime,3)
srt(str(line)+"\n"+timestr(alltime)+" --> "+timestr(alltime+timediff)+"\n"+str(line)+"\n"+"<font color=#5F9F9F>"+time.strftime("%H:%M:%S",time.localtime(starttime))+" -> "+time.strftime("%H:%M:%S",time.localtime(stoptime))+"</font> "+"<font color=#4D4DFF>"+timestr(timediff)+"</font>"+"\n")
line = line + 1
log("StopTime: "+time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(stoptime))+" 结束时间: "+timestr(alltime+timediff)+"\n")
print("StopTime: "+time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(stoptime))+" 结束时间: "+timestr(alltime+timediff))
print("Time: "+timestr(timediff)+"\n")
wavstream.stop_stream()
wavstream.close()
audio.terminate()
def stoprecord(self):
print("stop")
self.bRecord = False
def pause(self):
print("pause")
self.rr = False
def next(self):
print("next")
self.rr = True
def abslist(a):
return list(map(abs,a))
def mean(a):
return numpy.longlong(sum(a))/len(a)
def log(msg):
with open('C:/Users/Public/RE/'+localtimestr+ '.txt','a+') as file:
file.write(msg+"\n")
file.close()
def srt(msg):
with open('C:/Users/Public/RE/'+localtimestr+ '.srt','a+') as file:
file.write(msg+"\n")
file.close()
def timestr(sec):
m,s = divmod(sec,60)
h,m = divmod(m,60)
return str("%d:%02d:%.2f"%(h,m,s))
rt = RecordThread()
line = line + 1
#print(timestr(2.65))
log("RUN ...... Start At "+localtimestr+" SYS OK!"+" Frequency:91.1Mhz")
srt(str(line)+"\n"+"0:00:00.0 --> 0:00:30.0\n"+"{\\an8}"+"<font color=#FFFF00>"+ str(time.strftime("%Y/%m/%d %H:%M:%S",localtime))+"</font>"+" <font color=#00FFFF>(20:00-21:00)</font>"+"\n"+"<font color=#00FF00>438.025 -5 88.5 <i>QTH Suzhou Jiangsu China</i></font>\n<font color=#3299CC>苏州市业余无线电 472752158</font>\n\n1\n0:00:00.0 --> 0:00:30.0\n{\\an5}请遵守<font color=#FF0000><u><b>《中华人民共和国无线电管理条例》</b></u></font>\n")
print("RUN ...... Start At "+localtimestr+" SYS OK!"+" Frequency:91.1Mhz")
rt.start()
Read More:
- [Solved] PySide2 Failed to Create a Graphical Python Program
- Python PIP Fatal error in launcher: Unable to create process using ‘“e:\program files\programdata
- How to Solve Python Importerror: DLL load failed: unable to find the specified program using tensorflow
- How to Solve Automatic error keyerror:***‘
- The automatic token of Python interface is passed into the header
- An introduction to sys modules in Python and how packages are imported and used
- How to Solve Python WARNING: Ignoring invalid distribution -ip (e:\python\python_dowmload\lib\site-packages)
- Python3 Fatal error in launcher: Unable to create process using ‘”‘
- Python: How to parses HTML, extracts data, and generates word documents
- How to Solve Python Xlwt ValueError: More than 4094 XFs (styles)
- Python: How to Use try exception to Display Abnormal Error Information
- Python: How to get the size of the picture (byte/kb/mb)
- Python: How to Auto Add Watermark to PDF
- How to Fix keyerror in Python dictionary lookup
- Python: How to Solve error While importing windpy
- [Solved] Python Error: An attempt has been made to start a new process before the current process has finished …
- How to Solve Python AttributeError: ‘module’ object has no attribute ‘xxx’
- How to Fix Python reading large local file memory error
- Python: How to Costomize the Background of PS
- Python: How to Set Line breaks and tabs for Strings