Ich muss Geräusche aufnehmen, die von mechanischen Geräten ausgehen. Diese Geräusche treten zufällig alle paar Stunden auf und dauern nur etwa 1-3 Sekunden.
Um diese Aufgabe zu erfüllen, brauche ich einen Audiorecorder, der ständig läuft, aber nur aufzeichnet, wenn Audio vorhanden ist. Es gibt viele Audiorekorder, die "sprachaktiviert" sind, aber ich habe keinen gefunden, der funktioniert, da die Geräusche, die ich aufzunehmen versuche, zum Zeitpunkt der Aktivierung abgeschlossen sind.
Um dies zu erreichen, brauche ich eine App, die kontinuierlich aufzeichnet, aber nur Audio von "Soundaktivierung minus x Sekunden" behält. Es ist kein Problem, wenn 'x' festgelegt ist.
Anforderungen
Einstellungen (nicht erforderlich)
Update: Herzlichen Glückwunsch! Ich habe das Kopfgeld an @4mohit für seine/ihre Antwort vergeben. Ich führe noch Tests durch, um zu sehen, ob es für meine Aufgabe zuverlässig funktioniert. Danke auch an Steve Barnes für seine kreative Antwort.
Da ich mich noch in der Testphase befinde, bin ich für weitere Antworten offen. Ich werde weitere Updates veröffentlichen, wenn die Tests fortschreiten.
Wenn Sie nach einem Diktiergerät suchen, das kontinuierlich Audio aufzeichnen kann und die Stille überspringt und 4 Stunden lang unbeaufsichtigt laufen kann, sollten Sie sich meiner Meinung nach den Smart Voice Recorder ansehen . Es erfüllt Ihre Anforderungen an,
Aus der Beschreibung im Google Play Store:
Intelligenter Sprachrekorder
Smart Voice Recorder für hochwertige Langzeit-Tonaufnahmen mit Überspringen relativer Stille im laufenden Betrieb. Zum Beispiel können Sie es für Aufzeichnungen über Nachtschlafgespräche (oder Schnarchen :)), Geschäftstreffen, einen normalen Tag Ihres Babysitters, wie Sie singen oder Gitarre spielen und so weiter verwenden. Es ist fantastisch! Und Sie können es als normales Diktiergerät mit einfacher und ansprechender Benutzeroberfläche verwenden. Versuche es! :)
HINWEIS: Diese App ist kein Anrufrekorder. Funktioniert möglicherweise auf einigen Handys nicht richtig. Benutzeroberfläche noch nicht für Tablets optimiert. Aufzeichnungen in diesem Format können nicht per Text/SMS/MMS versendet werden. Bitte zögern Sie nicht, mir Feedback per E-Mail zu senden, wenn Sie welche haben.
Merkmale:
- automatische und manuelle Empfindlichkeitssteuerung für Skip-Stille-Modus (Beta)
- Live-Audio-Spektrumanalysator
- Wave/PCM-Kodierung mit einstellbarer Abtastrate (8-44 kHz)
- Aufnahme im Hintergrund (auch bei ausgeschaltetem Display)
- Werkzeug zur Kalibrierung der Mikrofonverstärkung
- Aufzeichnungsprozesssteuerung speichern/anhalten/fortsetzen/abbrechen
- Speicherung und Verzeichniswechsel (Standard: sdcard/SmartVoiceRecorder)
- verbleibende Aufnahmezeit wird auf dem Startbildschirm angezeigt, begrenzt nur durch den verfügbaren Speicherplatz auf Ihrem Speicher (und tech. Limit 2 GB pro Datei)
- einfach zu bedienende Aufnahmeliste
- Senden/Teilen Sie eine Aufzeichnung per E-Mail, WhatsApp, Dropbox usw.
- Stellen Sie eine Aufnahme mit einem Klick als Klingelton, Alarm oder Benachrichtigung ein
Berechtigungen, die diese App benötigt, sind:
- Internetzugang (zum Anzeigen von Anzeigen und einigen Statistiken)
- auf externen Speicher schreiben (um Aufnahmen zu speichern)
- Ton aufnehmen
- Wecksperre (um das Gerät am Schlafen zu hindern)
- Schreibeinstellungen (um Standard-Systemklingelton/-benachrichtigung/-alarm festzulegen)
- Abrechnung (für In-App-Option zum Deaktivieren von Werbung)
Wenn Sie anstelle eines Mobiltelefons einen Laptop verwenden können, können Sie dies mit python + pyaudio tun . Das Datensatzbeispiel sieht folgendermaßen aus:
"""PyAudio example: Record a few seconds of audio and save to a WAVE file."""
import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
Sie können dies jedoch ganz einfach ändern, um zu überprüfen, ob die Schallpegel einen bestimmten Schwellenwert überschritten haben und ob er überschritten wurde, um den aktuellen Satz von Frames in einer Datei aufzuzeichnen, die nach Uhrzeit und Datum benannt ist.
Bestimmen, ob der Schallpegel einen bestimmten Schwellenwert überschritten hat, sollte so einfach sein wie:
loudest = max([max(chunk) for chunk in frames])
if loudest > THRESHOLD:
# Save your frame
aber ich würde erwägen, a zu verwenden dqueue
, um Ihren Frame zu speichern, und sobald die Länge des Frames erreicht ist, einen Brocken von einem Ende herausnehmen, bevor Sie zum anderen schieben, wenn Sie aufnehmen, speichern Sie den Brocken, andernfalls knallen und verwerfen. Sie könnten dann, wenn Sie jeden Chunk erhalten, einfach das Maximum dieses Chunks überprüfen und, wenn es über dem Schwellenwert liegt, einen Zähler auf die Größe des Frames plus den gewünschten Überlauf setzen, und wenn es keine aktuelle offene Wave-Datei gibt, öffnen Sie eine mit dem Namen basierend zu der Zeit, wenn es keinen gibt, dekrementiere den Zähler, wenn er über 0 ist, und schreibe in die Datei, wenn er 0 erreicht, schließe die Datei.
Python kann auch zum Plotten und Analysieren der resultierenden Dateien wie in diesem Blog verwendet werden .
Verwenden Sie einfach den automatischen Audiorecorder , er hat alles, was Sie suchen, einschließlich der automatischen Aufnahme, wenn es etwas Rauschen gibt.
RockPaperLz- Maskiere es oder Casket
Mohit Garg
Mohit Garg
RockPaperLz- Maskiere es oder Casket