Module redvox.api900.sensors.microphone_sensor
This module contains classes and methods for working with microphone sensors.
Expand source code
"""
This module contains classes and methods for working with microphone sensors.
"""
import typing
import numpy
import redvox.api900.constants as constants
import redvox.api900.exceptions as exceptions
import redvox.api900.lib.api900_pb2 as api900_pb2
import redvox.api900.migrations as migrations
from redvox.api900.sensors.evenly_sampled_channel import EvenlySampledChannel
from redvox.api900.sensors.evenly_sampled_sensor import EvenlySampledSensor
class MicrophoneSensor(EvenlySampledSensor):
"""
High-level wrapper around microphone channels.
"""
def __init__(self, evenly_sampled_channel: typing.Optional[EvenlySampledChannel] = None):
"""
Initialized this channel.
:param evenly_sampled_channel: An instance of an EvenlySampledChannel with microphone data.
"""
if evenly_sampled_channel is None:
evenly_sampled_channel = EvenlySampledChannel()
super().__init__(evenly_sampled_channel)
self._evenly_sampled_channel.set_channel_types([api900_pb2.MICROPHONE])
def set_payload_values(self,
microphone_payload: typing.Union[typing.List[int], numpy.ndarray]) -> 'MicrophoneSensor':
"""
Sets the microphone channels payload values.
:param microphone_payload: Payload values.
:return: An instance of the sensor.
"""
self._evenly_sampled_channel.set_payload(migrations.maybe_set_int(microphone_payload),
constants.PayloadType.INT32_PAYLOAD)
return self
def payload_values(self) -> numpy.ndarray:
"""
Returns the microphone payload as a numpy ndarray of integers.
:return: The microphone payload as a numpy ndarray of integers.
"""
return self._evenly_sampled_channel.get_payload(api900_pb2.MICROPHONE)
def payload_mean(self) -> float:
"""Returns the mean of this channel's payload.
:return: The mean of this channel's payload.
"""
return self._evenly_sampled_channel.get_value_mean(api900_pb2.MICROPHONE)
# Currently, our Android and iOS devices don't calculate a median value, so we calculate it here
# If the payload is set manually, the median value is calculated by the API
def payload_median(self) -> numpy.float64:
"""Returns the median of this channel's payload.
:return: The median of this channel's payload.
"""
payload_values = self.payload_values()
if len(payload_values) <= 0:
raise exceptions.ReaderException("Can't obtain median value of empty array")
median = numpy.median(self.payload_values())
if isinstance(median, numpy.ndarray):
return median[0]
elif isinstance(median, numpy.float64):
return median
else:
raise exceptions.ReaderException("Unknown type %s" % str(type(median)))
def payload_std(self) -> float:
"""Returns the standard deviation of this channel's payload.
:return: The standard deviation of this channel's payload.
"""
return self._evenly_sampled_channel.get_value_std(api900_pb2.MICROPHONE)
Classes
class MicrophoneSensor (evenly_sampled_channel: Optional[EvenlySampledChannel] = None)
-
High-level wrapper around microphone channels.
Initialized this channel. :param evenly_sampled_channel: An instance of an EvenlySampledChannel with microphone data.
Expand source code
class MicrophoneSensor(EvenlySampledSensor): """ High-level wrapper around microphone channels. """ def __init__(self, evenly_sampled_channel: typing.Optional[EvenlySampledChannel] = None): """ Initialized this channel. :param evenly_sampled_channel: An instance of an EvenlySampledChannel with microphone data. """ if evenly_sampled_channel is None: evenly_sampled_channel = EvenlySampledChannel() super().__init__(evenly_sampled_channel) self._evenly_sampled_channel.set_channel_types([api900_pb2.MICROPHONE]) def set_payload_values(self, microphone_payload: typing.Union[typing.List[int], numpy.ndarray]) -> 'MicrophoneSensor': """ Sets the microphone channels payload values. :param microphone_payload: Payload values. :return: An instance of the sensor. """ self._evenly_sampled_channel.set_payload(migrations.maybe_set_int(microphone_payload), constants.PayloadType.INT32_PAYLOAD) return self def payload_values(self) -> numpy.ndarray: """ Returns the microphone payload as a numpy ndarray of integers. :return: The microphone payload as a numpy ndarray of integers. """ return self._evenly_sampled_channel.get_payload(api900_pb2.MICROPHONE) def payload_mean(self) -> float: """Returns the mean of this channel's payload. :return: The mean of this channel's payload. """ return self._evenly_sampled_channel.get_value_mean(api900_pb2.MICROPHONE) # Currently, our Android and iOS devices don't calculate a median value, so we calculate it here # If the payload is set manually, the median value is calculated by the API def payload_median(self) -> numpy.float64: """Returns the median of this channel's payload. :return: The median of this channel's payload. """ payload_values = self.payload_values() if len(payload_values) <= 0: raise exceptions.ReaderException("Can't obtain median value of empty array") median = numpy.median(self.payload_values()) if isinstance(median, numpy.ndarray): return median[0] elif isinstance(median, numpy.float64): return median else: raise exceptions.ReaderException("Unknown type %s" % str(type(median))) def payload_std(self) -> float: """Returns the standard deviation of this channel's payload. :return: The standard deviation of this channel's payload. """ return self._evenly_sampled_channel.get_value_std(api900_pb2.MICROPHONE)
Ancestors
Methods
def payload_mean(self) ‑> float
-
Returns the mean of this channel's payload. :return: The mean of this channel's payload.
Expand source code
def payload_mean(self) -> float: """Returns the mean of this channel's payload. :return: The mean of this channel's payload. """ return self._evenly_sampled_channel.get_value_mean(api900_pb2.MICROPHONE)
def payload_median(self) ‑> numpy.float64
-
Returns the median of this channel's payload. :return: The median of this channel's payload.
Expand source code
def payload_median(self) -> numpy.float64: """Returns the median of this channel's payload. :return: The median of this channel's payload. """ payload_values = self.payload_values() if len(payload_values) <= 0: raise exceptions.ReaderException("Can't obtain median value of empty array") median = numpy.median(self.payload_values()) if isinstance(median, numpy.ndarray): return median[0] elif isinstance(median, numpy.float64): return median else: raise exceptions.ReaderException("Unknown type %s" % str(type(median)))
def payload_std(self) ‑> float
-
Returns the standard deviation of this channel's payload. :return: The standard deviation of this channel's payload.
Expand source code
def payload_std(self) -> float: """Returns the standard deviation of this channel's payload. :return: The standard deviation of this channel's payload. """ return self._evenly_sampled_channel.get_value_std(api900_pb2.MICROPHONE)
def payload_values(self) ‑> numpy.ndarray
-
Returns the microphone payload as a numpy ndarray of integers. :return: The microphone payload as a numpy ndarray of integers.
Expand source code
def payload_values(self) -> numpy.ndarray: """ Returns the microphone payload as a numpy ndarray of integers. :return: The microphone payload as a numpy ndarray of integers. """ return self._evenly_sampled_channel.get_payload(api900_pb2.MICROPHONE)
def set_payload_values(self, microphone_payload: Union[List[int], numpy.ndarray]) ‑> MicrophoneSensor
-
Sets the microphone channels payload values. :param microphone_payload: Payload values. :return: An instance of the sensor.
Expand source code
def set_payload_values(self, microphone_payload: typing.Union[typing.List[int], numpy.ndarray]) -> 'MicrophoneSensor': """ Sets the microphone channels payload values. :param microphone_payload: Payload values. :return: An instance of the sensor. """ self._evenly_sampled_channel.set_payload(migrations.maybe_set_int(microphone_payload), constants.PayloadType.INT32_PAYLOAD) return self
Inherited members