![](/img/trans.png)
[英]mysql-python on mac osx 10.9.2: error: command '/usr/bin/clang' failed with exit status 1
[英]OSX - #include "portaudio.h" 1 error generated. error: command '/usr/bin/clang' failed with exit status 1
我正忙于制作语音识别代码,我有这个:
from pocketsphinx.pocketsphinx import *
from sphinxbase.sphinxbase import *
import os
import pyaudio
import wave
import audioop
from collections import deque
import time
import math
class SpeechDetector:
def __init__(self):
self.CHUNK = 1024
self.FORMAT = pyaudio.paInt16
self.CHANNELS = 1
self.RATE = 16000
self.SILENCE_LIMIT = 1
self.PREV_AUDIO = 0.5
self.THRESHOLD = 4500
self.num_phrases = -1
MODELDIR = "../../tools/pocketsphinx/model"
DATADIR = "../../tools/pocketsphinx/test/data"
config = Decoder.default_config()
config.set_string('-hmm', os.path.join(MODELDIR, 'en-us/en-us'))
config.set_string('-lm', os.path.join(MODELDIR, 'en-us/en-us.lm.bin'))
config.set_string('-dict', os.path.join(MODELDIR, 'en-us/cmudict-en-us.dict'))
self.decoder = Decoder(config)
def setup_mic(self, num_samples=50):
print "Getting intensity values from mic."
p = pyaudio.PyAudio()
stream = p.open(format=self.FORMAT,
channels=self.CHANNELS,
rate=self.RATE,
input=True,
frames_per_buffer=self.CHUNK)
values = [math.sqrt(abs(audioop.avg(stream.read(self.CHUNK), 4)))
for x in range(num_samples)]
values = sorted(values, reverse=True)
r = sum(values[:int(num_samples * 0.2)]) / int(num_samples * 0.2)
print " Finished "
print " Average audio intensity is ", r
stream.close()
p.terminate()
if r < 3000:
self.THRESHOLD = 3500
else:
self.THRESHOLD = r + 100
def save_speech(self, data, p):
filename = 'output_'+str(int(time.time()))
data = ''.join(data)
wf = wave.open(filename + '.wav', 'wb')
wf.setnchannels(1)
wf.setsampwidth(p.get_sample_size(pyaudio.paInt16))
wf.setframerate(16000)
wf.writeframes(data)
wf.close()
return filename + '.wav'
def decode_phrase(self, wav_file):
self.decoder.start_utt()
stream = open(wav_file, "rb")
while True:
buf = stream.read(1024)
if buf:
self.decoder.process_raw(buf, False, False)
self.decoder.end_utt()
words = []
[words.append(seg.word) for seg in self.decoder.seg()]
return words
def run(self):
self.setup_mic()
p = pyaudio.PyAudio()
stream = p.open(format=self.FORMAT,
channels=self.CHANNELS,
rate=self.RATE,
input=True,
frames_per_buffer=self.CHUNK)
print "* Mic set up and listening. "
audio2send = []
cur_data = ''
rel = self.RATE/self.CHUNK
slid_win = deque(maxlen=self.SILENCE_LIMIT * rel)
prev_audio = deque(maxlen=self.PREV_AUDIO * rel)
started = False
while True:
cur_data = stream.read(self.CHUNK)
slid_win.append(math.sqrt(abs(audioop.avg(cur_data, 4))))
if sum([x > self.THRESHOLD for x in slid_win]) > 0:
if started == False:
print "Starting recording of phrase"
started = True
audio2send.append(cur_data)
elif started:
print "Finished recording, decoding phrase"
filename = self.save_speech(list(prev_audio) + audio2send, p)
r = self.decode_phrase(filename)
print "DETECTED: ", r
os.remove(filename)
stream.close()
p.terminate()
if __name__ == "__main__":
sd = SpeechDetector()
sd.run()
但每次我运行它时,它都会说:ImportError: No module named pyaudio.
然后我去终端,我做了 pip install pyaudio 但它显示了这个:
#include "portaudio.h"
^
1 error generated.
error: command '/usr/bin/clang' failed with exit status 1
我使用的 Macbook 是 2011 年的 MacOS Sierra 10.12.5 版。我查看了每个堆栈溢出页面,但没有任何效果。 请帮我!
在安装 pyaudio 之前,你需要先安装 portaudio。 使用自制软件安装 portaudio
来自pyaudio网站
Apple Mac OS X 使用 Homebrew 安装必备的 portaudio 库,然后使用 pip 安装 PyAudio:
brew install portaudio pip install pyaudio
笔记:
如果尚未安装,请下载 Homebrew。 pip 将下载 PyAudio 源代码并为您的 Python 版本构建它。 自制软件和构建 PyAudio 还需要安装适用于 Xcode 的命令行工具(更多信息)。
就我而言,在brew install portaudio
之后安装pyaudio
仍然失败。
我删除了我的 python env(由 virtualenv 创建),它可以工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.