这个问题似乎是一个重复的问题。 Python: ufunc 'add' 没有包含一个签名匹配类型的循环 dtype('S21') dtype('S21') dtype('S21') , but the solution presented there isn't working.
我目前正在进行的工作是 https://github.com/executable16/audio-fingerprint-identifying-python 因此,我避免在这里粘贴所有的代码。我得到的主要是一个错误。
Traceback (most recent call last):
File "recognize-from-microphone.py", line 139, in <module>
matches.extend(find_matches(channel))
File "recognize-from-microphone.py", line 132, in return_matches
yield (sid, offset - mapper[hash])
numpy.core._exceptions.UFuncTypeError: ufunc 'subtract' did not contain a loop with signature matching types (dtype('S21'), dtype('S21')) -> dtype('S21')
在我看来,这种例外情况实际上很少能说明这里的实际问题是什么。我试过SO的其他解决方案,但它们似乎并不奏效。
准确的错误路线是。yield (sid, offset - mapper[hash])
。
The types of sid
, offset
and mapper[hash]
are <class 'int'>
, <class 'bytes'>
, and <class 'numpy.int64'>
, respectively.
对这个问题的任何修复,加上适当的解释,将是非常有帮助的。