Tensorflow Audio_ops无法读取iOS中的音频WAV文件。解码\u WAV:头不匹配:预期的fmt,但发现垃圾

2024-09-29 21:42:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个iOS应用程序,将音频记录为wav文件,并将文件发送到服务器进行音频识别。iOS应用程序使用以下配置将音频录制为wav文件

let settings = [
                    AVFormatIDKey: Int(kAudioFormatLinearPCM),
                    AVSampleRateKey: 16000,
                    AVNumberOfChannelsKey: 1,
                    AVLinearPCMBitDepthKey: 16,
                    AVEncoderAudioQualityKey:AVAudioQuality.max.rawValue
                    ] as [String : Any]

这些文件正在用任何媒体播放器播放。但是当我尝试在服务器上用tensorflow ops读取文件时,我得到了以下错误

InvalidArgumentError: Header mismatch: Expected fmt  but found JUNK
     [[node DecodeWav_3 (defined at <ipython-input-5-36afd53919f4>:4) ]]

Errors may have originated from an input operation.
Input Source operations connected to node DecodeWav_3:
 ReadFile_3 (defined at <ipython-input-5-36afd53919f4>:3)

Original stack trace for 'DecodeWav_3':
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/ipykernel_launcher.py", line 16, in <module>
    app.launch_new_instance()
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/traitlets/config/application.py", line 658, in launch_instance
    app.start()
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/ipykernel/kernelapp.py", line 505, in start
    self.io_loop.start()
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/tornado/platform/asyncio.py", line 148, in start
    self.asyncio_loop.run_forever()
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/asyncio/base_events.py", line 438, in run_forever
    self._run_once()
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/asyncio/base_events.py", line 1451, in _run_once
    handle._run()
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/asyncio/events.py", line 145, in _run
    self._callback(*self._args)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/tornado/ioloop.py", line 690, in <lambda>
    lambda f: self._run_callback(functools.partial(callback, future))
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/tornado/ioloop.py", line 743, in _run_callback
    ret = callback()
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/tornado/gen.py", line 787, in inner
    self.run()
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/tornado/gen.py", line 748, in run
    yielded = self.gen.send(value)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/ipykernel/kernelbase.py", line 365, in process_one
    yield gen.maybe_future(dispatch(*args))
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/tornado/gen.py", line 209, in wrapper
    yielded = next(result)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/ipykernel/kernelbase.py", line 272, in dispatch_shell
    yield gen.maybe_future(handler(stream, idents, msg))
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/tornado/gen.py", line 209, in wrapper
    yielded = next(result)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/ipykernel/kernelbase.py", line 542, in execute_request
    user_expressions, allow_stdin,
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/tornado/gen.py", line 209, in wrapper
    yielded = next(result)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/ipykernel/ipkernel.py", line 294, in do_execute
    res = shell.run_cell(code, store_history=store_history, silent=silent)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/ipykernel/zmqshell.py", line 536, in run_cell
    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2855, in run_cell
    raw_cell, store_history, silent, shell_futures)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2881, in _run_cell
    return runner(coro)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/IPython/core/async_helpers.py", line 68, in _pseudo_sync_runner
    coro.send(None)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 3058, in run_cell_async
    interactivity=interactivity, compiler=compiler, result=result)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 3249, in run_ast_nodes
    if (await self.run_code(code, result,  async_=asy)):
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 3326, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-5-36afd53919f4>", line 4, in <module>
    data = audio_ops.decode_wav(audio_binary, desired_channels=1)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/tensorflow/python/ops/gen_audio_ops.py", line 227, in decode_wav
    desired_samples=desired_samples, name=name)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py", line 788, in _apply_op_helper
    op_def=op_def)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 507, in new_func
    return func(*args, **kwargs)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 3616, in create_op
    op_def=op_def)
  File "/Users/minimaci73/anaconda3/envs/Samples/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 2005, in __init__
    self._traceback = tf_stack.extract_stack()

我找不到坠机的原因。我的tensorflow读取文件的代码如下

import tensorflow as tf
from tensorflow.contrib.framework.python.ops import audio_ops
file = "/Users/minimaci73/Downloads/1567690231185.wav"  #wav file path
audio_binary = tf.read_file(file)
data = audio_ops.decode_wav(audio_binary, desired_channels=1)
pcm16_data = tf.Session().run(data)
pcm16_data = pcm16_data[0] 
print(pcm16_data)

Tags: runinpyselflibpackagestensorflowline

热门问题