IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 八股文练习对话辅助器(简易版) -> 正文阅读

[Python知识库]八股文练习对话辅助器(简易版)

八股文练习对话辅助器(简易版)

一、概述

在专业面试的时候经常会有人(比如说我自己=_=)八股文(知识点)理解的很好,且在平时中也能够比较清晰的讲述出来。但是到了面试的时候,在面试官的注视下,经常会因为紧张啥的造成忘词,头脑一片空白的情况,最终导致了面试的体验不是很好。因此,基于这种问题的考虑,我就在想,能不能自己整一个虚拟的面试官来模拟面试,减少面试紧张等情况的出现。当然了,目前是有类似的公司来专门做AI面试的开发的,但是那得花钱啊,对于我们这群囊中羞涩的年轻人来说性价比确实不是太高。因此,我打算自己试试看能不能实现一个简易的辅助器,来帮助我们熟悉专业面试,提高offer获取的概率(当然了,由于本人水平有限,这个简易版本的辅助器不一定好用,也不一定适合每个人,如果各位大佬有更好的想法或实现,可以提出来,大家可以共同探讨一下,以使得更好的帮助到每个人)。

二、相关配置

代码由python语音进行编写,目前在win10下可以运行通过
具体的运行环境如下:

python 3.6.2
pyaudio 0.2.11
speechrecognition 3.8.1

整个 “八股文练习对话辅助器” 的目录文件如下:
在这里插入图片描述
其中, itemBank是存放的检索库,其每个子文件代表一类的知识点,比如说 ‘computer_Network’ 则代表计算机网络的知识

三、方法实现

整个 “八股文练习对话辅助器” 的实现流程如下所示:
在这里插入图片描述

我们可以从流程图中看到,对于整个 “八股文练习对话辅助器”,我们可以简单的将其分为三类操作:

① 用户叙述问题;
② 计算机根据用户的讲述的内容选择相应的题库,并选出题目;
③ 通过将检索到的问题题目进行语音播报。

其中,为了能够花最少的时间来实现大致的效果,我们简化了部分模块的设计。对于语音识别,我们采用了百度AI的语音识别来理解用户的问题(这一部分如果写深了算是一个比较大的部分了,由于个人水平有限,就不自己重头写了);而对于题库以及问题检索,我取了个巧,直接将题库整理到 .txt 的文件下(当然了,我因为时间不是很充裕,就没整理相关的题库了),然后随机从题库中随机抽题来对用户进行提问。

四、实现效果

八股文练习对话辅助器(简易版)


Note:可能因为我是拿着手机录的屏,手机麦克风离我太近了,导致我的声音远大于电脑声音,建议各位自我调节合适的音量食用

五、可扩展性探讨

1.整体的框架可以更换下,现在的框架太简单了
2.用户讲述时语音识别的等待机制还需要优化
3.语音识别以及AI的可训练性还有优化的空间(需要的相关知识较多,不建议轻易触碰)
4.问题的检索可以改进下,或许可以加入爬虫全网检索。同时,我们也可以加入问题答案这个选项,使大家不需要再去书中或网上找问题的答案
5.系统语音的播报太刻板了,可以考虑更换下声线,使得我们在背书的时候心情愉悦
6.可以考虑设计个合适的UI界面,模拟面试官的形象轮廓,以提高身临其境的感受

六、实现代码

Github: https://github.com/DeepVegChicken/Learning-InterviewPractice_AIDS

import os
import time
import random
import winsound
import win32com.client
from aip import AipSpeech
import speech_recognition as sr

# BAIDU_APP_ID, BAIDU_API_KEY, BAIDU_SECRET_KEY这三个是百度语音识别的API,从一位博主上'借鉴 ‘借鉴’ 下来的,忘记是哪位了,再此感谢
BAIDU_APP_ID = 'https://openapi.baidu.com/oauth/2.0/token?'
BAIDU_API_KEY = 'vyYLov63W6x33nIPvwVdLLsX'
BAIDU_SECRET_KEY = 'EzgQoFF9xp62SeGCXCBaD8FjWNxvl9kZ'
API_Input_Speech = AipSpeech(BAIDU_APP_ID, BAIDU_API_KEY, BAIDU_SECRET_KEY)

API_Output_Speech = win32com.client.Dispatch("SAPI.SPVOICE")


# itemBank Local
fileLoc_CN = "itemBank/computer_Network/items.txt"
fileLoc_DS = "itemBank/data_Structure/items.txt"
fileLoc_DB = "itemBank/dataBase/items.txt"
fileLoc_LI = "itemBank/language_Infrastructure/c++.txt"
fileLoc_OS = "itemBank/operating_System/items.txt"


def textToVoice(text_data):
    API_Output_Speech.Speak(text_data)
    winsound.PlaySound(text_data, winsound.SND_ASYNC)


def voiceToText(audio_data):
    result = API_Input_Speech.asr(audio_data, 'wav', 16000, {'dev_pid': 1536})
    try:
        text = result['result'][0]
    except Exception as e:
        print(e)
        text = ""
    return text


def get_Message():
    # Initializing Recognizer
    r = sr.Recognizer()

    # Initializing the Microphone
    mic = sr.Microphone(sample_rate=16000)

    # Recording
    print("开始")
    with mic as source:
        r.adjust_for_ambient_noise(source)
        audio = r.listen(source)

    # Analysis
    audio_data = audio.get_wav_data()

    return voiceToText(audio_data)


def language_Infrastructure():
    with open(fileLoc_LI, mode='r', encoding='utf-8') as f:
        itemLines = f.read().splitlines()

    text = ""
    textToVoice("开始")
    while True:
        message = get_Message()
        if message == "返回主菜单":
            break
        elif message == "下一题":
            text = random.choice(itemLines)
            textToVoice(text)
        elif message == "再说一遍题目":
            textToVoice(text)
        else:
            textToVoice("听不清,请再说一遍吧")


def data_Structure():
    with open(fileLoc_DS, mode='r', encoding='utf-8') as f:
        itemLines = f.read().splitlines()

    text = ""
    textToVoice("开始")
    while True:
        message = get_Message()
        if message == "返回主菜单":
            break
        elif message == "下一题":
            text = random.choice(itemLines)
            textToVoice(text)
        elif message == "再说一遍题目":
            textToVoice(text)
        else:
            textToVoice("听不清,请再说一遍吧")


def operating_System():
    with open(fileLoc_OS, mode='r', encoding='utf-8') as f:
        itemLines = f.read().splitlines()

    text = ""
    textToVoice("开始")
    while True:
        message = get_Message()
        if message == "返回主菜单":
            break
        elif message == "下一题":
            text = random.choice(itemLines)
            textToVoice(text)
        elif message == "再说一遍题目":
            textToVoice(text)
        else:
            textToVoice("听不清,请再说一遍吧")


def computer_Network():
    with open(fileLoc_CN, mode='r', encoding='utf-8') as f:
        itemLines = f.read().splitlines()

    text = ""
    textToVoice("开始")
    while True:
        message = get_Message()
        if message == "返回主菜单":
            break
        elif message == "下一题":
            text = random.choice(itemLines)
            textToVoice(text)
        elif message == "再说一遍题目":
            textToVoice(text)
        else:
            textToVoice("听不清,请再说一遍吧")


def dataBase():
    with open(fileLoc_DB, mode='r', encoding='utf-8') as f:
        itemLines = f.read().splitlines()

    text = ""
    textToVoice("开始")
    while True:
        message = get_Message()
        if message == "返回主菜单":
            break
        elif message == "下一题":
            text = random.choice(itemLines)
            textToVoice(text)
        elif message == "再说一遍题目":
            textToVoice(text)
        else:
            textToVoice("听不清,请再说一遍吧")


def main():
    while True:
        textToVoice("请选择你要学习的内容")
        print("\n请选择你要学习的内容")
        select_itemBank = get_Message()
        os.system("cls")
        if select_itemBank == "关机":
            break

        elif select_itemBank == "语法基础":
            textToVoice("已成功进入语法基础的学习")
            language_Infrastructure()

        elif select_itemBank == "数据结构":
            textToVoice("已成功进入数据结构的学习")
            data_Structure()

        elif select_itemBank == "操作系统":
            textToVoice("已成功进入操作系统的学习")
            operating_System()

        elif select_itemBank == "计算机网络":
            textToVoice("已成功进入计算机网络的学习")
            computer_Network()

        elif select_itemBank == "数据库":
            textToVoice("已成功进入数据库的学习")
            dataBase()

        else:
            textToVoice("听不清,请再说一遍吧")


if __name__ == '__main__':
    main()
    textToVoice("已成功关机")
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 08:41:12  更:2022-04-30 08:41:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 16:49:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码