擅长:python、mysql、java
<p>我相信您缺少<code>CHUNK</code>作为<code>player.write</code>调用的第二个参数。</p>
<pre><code>player.write(np.fromstring(stream.read(CHUNK),dtype=np.int16),CHUNK)
</code></pre>
<p>另外,不确定它的格式是否有错误。但是<code>player.write</code>需要被标记到<code>for</code>循环中</p>
<p>每<a href="https://people.csail.mit.edu/hubert/pyaudio/" rel="nofollow noreferrer">pyaudio site</a>需要<code>RATE / CHUNK * RECORD_SECONDS</code>,而不是<code>RECORD *RATE/CHUNK</code>,因为<code>python</code>在<code>/</code>除法之前执行<code>*</code>乘法。</p>
<pre><code>for i in range(int(20*RATE/CHUNK)): #do this for 10 seconds
player.write(np.fromstring(stream.read(CHUNK),dtype=np.int16),CHUNK)
stream.stop_stream()
stream.close()
p.terminate()
</code></pre>
<p>最后,您可能需要将<code>rate</code>增加到<code>44100</code>,将<code>CHUNK</code>增加到<code>1024</code>,并将<code>CHANNEL</code>增加到<code>2</code>以获得更好的保真度。</p>