我正在用python做语音助手,但出现错误,您可以帮我吗?

问题描述

# Import packages
import speech_recognition as sr
import os
from gtts import gTTS
import datetime
import warnings
import calendar
import random
import wikipedia

# Ignore any warning messages
warnings.filterwarnings('ignore')


# Record audio and return as string
def recordAudio():
    # record the audio
    r = sr.Recognizer()  # creating a speech recogniser

    # open the mic and start recording
    with sr.Microphone() as source:
        print('Say Something:')
        audio = r.listen(source)
    # Use google speech recognition
    data = ''
    try:
        data = r.recognize_google(audio)
        print('You said : ' + data)
    except sr.UnkNownValueError:
        print('Google Speech recognition not undstand you,unkNown error')
    except sr.RequestError as e:
        print('Request results from google speechrecognition service error' + e)

    return data


recordAudio()


# A fuction to get the virtual assistant response
def assistantResponse(text):
    print(text)

    # convert the text to speech
    myobj = gTTS(text=text,lang='en',slow=False)

    # save the audio to a file
    myobj.save('assistant_response.mp3')

    # SPlay the converted file
    os.system('start assistant_response.mp3')


# A function for wake word
def wakeWord(text):
    WAKE_WORDS = {'hey bongo','hey man','hey computer','okay google'}  # list of wake words

    text = text.lower()  # convert the text to lower case words

    # Check to see if user input is a wake eord
    for phrase in WAKE_WORDS:
        if phrase in text:
            return True

    # If The wake word is not found in text from the loop,soo it returns False
    return False


# A function to get the current date
def getDate():
    Now = datetime.datetime.Now()
    my_date = datetime.datetime.today()
    weekday = calendar.day_name[my_date.weekday()]  # sunday
    monthNum = Now.month
    dayNum = Now.day

    # A list of months
    month_names = ['January','February','march',' April','May','June','July','August','September',' October','November','December']

    # A list of ordinal Numbers
    ordinalNumbers = ['1st','2nd','3rd',' 4th','5th','6th','7th','8th','9th','10th','11th','12th','13th','14th','15th','16th','17th','18th','19th','20th','21st','22nd','23rd','24rd','25th','26th','27th','28th','29th','30th','31st']

    return 'Today is ' + weekday + ' ' + month_names[monthNum - 1] + ' the ' + ordinalNumbers[dayNum - 1] + ' .'


# Fuction to return greeting
def greeting(text):
    # Greeting inputs
    GREETING_INPUTS = ['hi','hey','hola','wassup','hello']

    # Greeting response
    GREETING_RESPONSES = ['howdy','all that good','hello master','heythere']

    # If users input is a greeting,then return a randomly chosen greetng response
    for word in text.split():
        if word.lower() in GREETING_INPUTS:
            return random.choice(GREETING_RESPONSES) + '.'

    # If no greeting was detected
    return ''


# A functions to get persons name from text
def getPerson(text):
    wordList = text.split()  # splits the text to words

    for i in range(0,len(wordList)):
        if i + 3 <= len(wordList) - 1 and wordList[i].lower() == 'who' and wordList[i + 1].lower() == 'is':
            return wordList[i + 2] + ' ' + wordList[i + 3]


while True:

    # record the audio
    text = recordAudio()
    response = ''

    # check for the wake word / phrase
    if (wakeWord(text) == True):

        # check for greetings by the user
        response = response + greeting(text)

        # check to see if the user has said anything about data
        if ('date' in text):
            get_date = getDate()
            response = response + ' ' + get_date

        # check to see if the user said 'who is'
        if ('who is' in text):
            person = getPerson(text)
            wiki = wikipedia.summary(person,sentences=2)
            response = response + ' ' + wiki

        # assistant respond back using audio and text from response
        assistantResponse(response)

下面是错误

C:\Users\90551\PycharmProjects\YazılımBilimi\venv\Scripts\python.exe C:/Users/90551/PycharmProjects/YazılımBilimi/voiceassistan.py
Traceback (most recent call last):
  File "C:\Users\90551\PycharmProjects\YazılımBilimi\venv\lib\site-packages\speech_recognition\__init__.py",line 108,in get_pyaudio
    import pyaudio
ModuleNotFoundError: No module named 'pyaudio'

During handling of the above exception,another exception occurred:

Traceback (most recent call last):
  File "C:/Users/90551/PycharmProjects/YazılımBilimi/voiceassistan.py",line 37,in <module>
    recordAudio()
  File "C:/Users/90551/PycharmProjects/YazılımBilimi/voiceassistan.py",line 21,in recordAudio
    with sr.Microphone() as source:
  File "C:\Users\90551\PycharmProjects\YazılımBilimi\venv\lib\site-packages\speech_recognition\__init__.py",line 79,in __init__
    self.pyaudio_module = self.get_pyaudio()
  File "C:\Users\90551\PycharmProjects\YazılımBilimi\venv\lib\site-packages\speech_recognition\__init__.py",line 110,in get_pyaudio
    raise AttributeError("Could not find PyAudio; check installation")
AttributeError: Could not find PyAudio; check installation

Process finished with exit code 1

我安装了PyAudio,并说“下载PyAudio”,但仍然说下载PyAudio
我应该下载哪些模块或软件包?。 我不调试它,仅安装了PyAudio
这是我所知道的所有信息。
如果无法解决该问题,我将尝试提供更多信息:)。 感谢所有Stackoverflow社区的帮助。

解决方法

对不起,我没有做这件事,但是先将其复制并粘贴到终端中

pip install PyAudio

如果这不起作用,请不要担心它也发生在我身上, 您将必须下载home-brew,因为这使我们可以下载portaudio,并将其复制并粘贴到终端中。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

这将下载Homebrew。

下载后,将其复制并粘贴到终端中

brew install portaudio

portaudio允许我们下载pyaudio。

然后尝试通过pycharm或您使用的任何编码程序安装pyaudio软件包。

,

如果您尝试使用 PyAudio 安装 pip,您可能会遇到错误,因此请尝试使用 pipwin
安装它 安装pipwin

pip install pipwin

然后安装PyAudio

pipwin install PyAudio

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...