def setUp(self):
    self.log_dir = tempfile.mkdtemp()

    # We use numpy.random to generate audio. We seed to avoid non-determinism
    # in this test.
    numpy.random.seed(42)

    # Create audio summaries for run foo.
    ops.reset_default_graph()
    sess = tf.Session()
    placeholder = array_ops.placeholder(dtypes.float32)
    summary_lib.audio(name="baz", tensor=placeholder, sample_rate=44100)
    merged_summary_op = summary_lib.merge_all()
    foo_directory = os.path.join(self.log_dir, "foo")
    writer = FileWriter(foo_directory)
    writer.add_graph(sess.graph)
    for step in xrange(2):
      # The floats (sample data) range from -1 to 1.
      writer.add_summary(sess.run(merged_summary_op, feed_dict={
          placeholder: numpy.random.rand(42, 22050) * 2 - 1
      }), global_step=step)
    writer.close()

    # Create audio summaries for run bar.
    ops.reset_default_graph()
    sess = tf.Session()
    placeholder = array_ops.placeholder(dtypes.float32)
    summary_lib.audio(name="quux", tensor=placeholder, sample_rate=44100)
    merged_summary_op = summary_lib.merge_all()
    bar_directory = os.path.join(self.log_dir, "bar")
    writer = summary_lib.FileWriter(bar_directory)
    writer.add_graph(sess.graph)
    for step in xrange(2):
      # The floats (sample data) range from -1 to 1.
      writer.add_summary(sess.run(merged_summary_op, feed_dict={
          placeholder: numpy.random.rand(42, 11025) * 2 - 1
      }), global_step=step)
    writer.close()

    # Start a server with the plugin.
    multiplexer = event_multiplexer.EventMultiplexer({
        "foo": foo_directory,
        "bar": bar_directory,
    })
    context = base_plugin.TBContext(
        logdir=self.log_dir, multiplexer=multiplexer)
    self.plugin = audio_plugin.AudioPlugin(context)
    wsgi_app = application.TensorBoardWSGIApp(
        self.log_dir, [self.plugin], multiplexer, reload_interval=0)
    self.server = werkzeug_test.Client(wsgi_app, wrappers.BaseResponse)
 def test_audio(self):
   op = summary_lib.audio('white_noise',
                         random_uniform(shape=[1, 44100],
                                           minval=-1.0,
                                           maxval=1.0),
                         sample_rate=44100)
   value = self._value_from_op(op)
   assert value.HasField('audio'), value
   self._assert_noop(value)
Esempio n. 3
0
 def testAudioSummary(self):
   with self.cached_session() as s:
     i = array_ops.ones((5, 3, 4))
     with ops.name_scope('outer'):
       aud = summary_lib.audio('inner', i, 0.2, max_outputs=3)
     summary_str = s.run(aud)
   summary = summary_pb2.Summary()
   summary.ParseFromString(summary_str)
   values = summary.value
   self.assertEqual(len(values), 3)
   tags = sorted(v.tag for v in values)
   expected = sorted('outer/inner/audio/{}'.format(i) for i in xrange(3))
   self.assertEqual(tags, expected)
Esempio n. 4
0
 def testAudioSummary(self):
     with self.cached_session() as s:
         i = array_ops.ones((5, 3, 4))
         with ops.name_scope('outer'):
             aud = summary_lib.audio('inner', i, 0.2, max_outputs=3)
         summary_str = s.run(aud)
     summary = summary_pb2.Summary()
     summary.ParseFromString(summary_str)
     values = summary.value
     self.assertEqual(len(values), 3)
     tags = sorted(v.tag for v in values)
     expected = sorted('outer/inner/audio/{}'.format(i) for i in xrange(3))
     self.assertEqual(tags, expected)
Esempio n. 5
0
 def test_audio_summary_v2(self):
   """Tests audio v2 invocation."""
   with test.mock.patch.object(
       summary_v2, 'audio', autospec=True) as mock_audio_v2:
     with summary_ops_v2.create_summary_file_writer(
         self.get_temp_dir()).as_default(step=10):
       i = array_ops.ones((5, 3, 4))
       with ops.name_scope_v2('dolphin'):
         tensor = summary_lib.audio('wave', i, 0.2, max_outputs=3)
   # Returns empty string.
   self.assertEqual(tensor.numpy(), b'')
   self.assertEqual(tensor.dtype, dtypes.string)
   mock_audio_v2.assert_called_once_with(
       'dolphin/wave', data=i, sample_rate=0.2, step=10, max_outputs=3)
Esempio n. 6
0
  def test_audio_summary_v2__2d_tensor(self):
    """Tests audio v2 invocation with 2-D tensor input."""
    with test.mock.patch.object(
        summary_v2, 'audio', autospec=True) as mock_audio_v2:
      with summary_ops_v2.create_summary_file_writer(
          self.get_temp_dir()).as_default(step=11):
        input_2d = array_ops.ones((5, 3))
        tensor = summary_lib.audio('wave', input_2d, 0.2, max_outputs=3)

    # Returns empty string.
    self.assertEqual(tensor.numpy(), b'')
    self.assertEqual(tensor.dtype, dtypes.string)

    mock_audio_v2.assert_called_once_with(
        'wave', data=test.mock.ANY, sample_rate=0.2, step=11, max_outputs=3)
    input_3d = array_ops.ones((5, 3, 1))  # 3-D input tensor
    self.assertAllEqual(mock_audio_v2.call_args[1]['data'], input_3d)
  def testAudioSummary(self):
    np.random.seed(7)
    for channels in (1, 2, 5, 8):
      with self.test_session(graph=ops.Graph()) as sess:
        num_frames = 7
        shape = (4, num_frames, channels)
        # Generate random audio in the range [-1.0, 1.0).
        const = 2.0 * np.random.random(shape) - 1.0

        # Summarize
        sample_rate = 8000
        summ = summary.audio(
            "snd", const, max_outputs=3, sample_rate=sample_rate)
        value = sess.run(summ)
        self.assertEqual([], summ.get_shape())
        audio_summ = self._AsSummary(value)

        # Check the rest of the proto
        self._CheckProto(audio_summ, sample_rate, channels, num_frames)
  def testAudioSummary(self):
    np.random.seed(7)
    for channels in (1, 2, 5, 8):
      with self.session(graph=ops.Graph()) as sess:
        num_frames = 7
        shape = (4, num_frames, channels)
        # Generate random audio in the range [-1.0, 1.0).
        const = 2.0 * np.random.random(shape) - 1.0

        # Summarize
        sample_rate = 8000
        summ = summary.audio(
            "snd", const, max_outputs=3, sample_rate=sample_rate)
        value = sess.run(summ)
        self.assertEqual([], summ.get_shape())
        audio_summ = self._AsSummary(value)

        # Check the rest of the proto
        self._CheckProto(audio_summ, sample_rate, channels, num_frames)
Esempio n. 9
0
 def testAudioSummaryWithInvalidSampleRate(self):
     with self.assertRaises(errors.InvalidArgumentError):
         invalid_sample_rate = [22000.0, 22000.0]
         self.evaluate(summary_lib.audio('', [[1.0]], invalid_sample_rate))