DeprecationWarning: The binary mode of fromstring is deprecated, as it behaves surprisingly on unicode inputs. Use frombuffer instead data = np.fromstring(stream.read(CHUNK), dtype=np.int16)
时间: 2024-03-05 21:48:53 浏览: 209
这个警告是因为Python 3中的`fromstring`函数默认采用Unicode编码,但是读取二进制数据时会出错,因此建议使用`frombuffer`函数来代替`fromstring`函数。
以下是使用`frombuffer`函数的示例代码:
```python
import pyaudio
import numpy as np
# 定义一些参数
RATE = 16000
CHUNK = 1024
VAD_THRESHOLD = 500
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16, channels=1, rate=RATE, input=True, frames_per_buffer=CHUNK)
print("* 开始录音...")
while True:
# 读取一段音频数据
data = stream.read(CHUNK)
data = np.frombuffer(data, dtype=np.int16)
# 计算音量
rms = np.sqrt(np.mean(np.square(data)))
# 如果音量大于阈值,则认为有人在说话
if rms > VAD_THRESHOLD:
print("有人在说话!")
print("* 结束录音...")
stream.stop_stream()
stream.close()
p.terminate()
```
该代码使用`frombuffer`函数来读取二进制数据,并计算音量。如果音量大于预设的阈值,就会输出“有人在说话!”的提示信息。注意,这里的二进制数据是以字节串的形式读取的,需要使用`frombuffer`函数进行解析。
阅读全文