Trang chủ Tin Học Lớp 7 Lần này sẽ là một câu khó và sẽ liên...

Lần này sẽ là một câu khó và sẽ liên quan đến lập trình AI :)) Lưu ý: Viết bằng ngôn ngữ lập trình Python Người trả lời phải có kiến thức về: Lập trình giao di

Câu hỏi :

Lần này sẽ là một câu khó và sẽ liên quan đến lập trình AI :)) Lưu ý: Viết bằng ngôn ngữ lập trình Python Người trả lời phải có kiến thức về: Lập trình giao diện đồ họa người dùng, lập trình nhận diện giọng nói, lập trình trợ lí ảo, lập trình deeplearning (cụ thể là phân tích dáng người), lập trình xử lí dữ liệu dạng bảng pandas, lập trình hướng đối tượng OOP (nếu cần), lập trình Python cơ bản. $\\$ Viết chương trình tạo một giao diện người dùng có một dòng chữ "Hãy nhập tên bạn vào đây", một khu vực nhập dữ liệu và một nút "Start". Khi người dùng nhấn vào nút "Start" thì chương trình sẽ nói các câu sau, mỗi câu cách nhau 3s: "Xin chào" + <tên được nhập ở khu vực nhập dữ liệu> + "hãy đưa một bàn tay lên cao hơn đầu để nói". "Sau đó, hãy đưa tay còn lại lên cao hơn đầu để bắt đầu tìm kiếm". $\\$ Sau khi nói, chương trình sẽ phân tích người đứng trước camera. Nếu người dùng đưa một tay lên cao hơn đầu thì thu âm lời nói của người dùng. Khi tay còn lại được đưa lên cao hơn đầu thì ngưng thu âm và bắt đầu tìm kiếm lời nói của người dùng. Sau đó chương trình sẽ nói định nghĩa về thứ mà người dùng nói. $\\$ Khi nói xong, chương trình sẽ lưu lại tên người dùng và lời nói của người dùng vào file "history.csv", lưu ý là chương trình sẽ ghi thêm chứ không xóa những dữ liệu đã ghi trước đó. $\\$ Sau khi ghi xong thì kết thúc chương trình, thoát camera, micro và giao diện người dùng.

Lời giải 1 :

Code:

import cv2
import mediapipe as mp
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout
import pyttsx3
class handTracker():
    def __init__(self, mode=False, maxHands=2, detectionCon=0.5,modelComplexity=1,trackCon=0.5):
        self.mode = mode
        self.maxHands = maxHands
        self.detectionCon = detectionCon
        self.modelComplex = modelComplexity
        self.trackCon = trackCon
        self.mpHands = mp.solutions.hands
        self.hands = self.mpHands.Hands(self.mode, self.maxHands,self.modelComplex,
                                        self.detectionCon, self.trackCon)
        self.mpDraw = mp.solutions.drawing_utils
    def handsFinder(self,image,draw=True):
        imageRGB = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
        self.results = self.hands.process(imageRGB)
        if self.results.multi_hand_landmarks:
            for handLms in self.results.multi_hand_landmarks:

                if draw:
                    self.mpDraw.draw_landmarks(image, handLms, self.mpHands.HAND_CONNECTIONS)
        return image
    def positionFinder(self,image, handNo=0, draw=True):
        lmlist = []
        if self.results.multi_hand_landmarks:
            Hand = self.results.multi_hand_landmarks[handNo]
            for id, lm in enumerate(Hand.landmark):
                h,w,c = image.shape
                cx,cy = int(lm.x*w), int(lm.y*h)
                lmlist.append([id,cx,cy])
            if draw:
                cv2.circle(image,(cx,cy), 15 , (255,0,255), cv2.FILLED)

        return lmlist
def main():
    cap = cv2.VideoCapture(0)
    tracker = handTracker()
    while True:
        success,image = cap.read()
        image = tracker.handsFinder(image)
        lmList = tracker.positionFinder(image)
        if len(lmList) != 0:
            print(lmList[4])
            import speech_recognition as sr
            recognizer = sr.Recognizer()
            with sr.Microphone() as source:
                print("Adjusting noise ")
                recognizer.adjust_for_ambient_noise(source, duration=1)
                print("Recording for 4 seconds")
                recorded_audio = recognizer.listen(source, timeout=4)
                print("Done recording")
            try:
                print("Recognizing the text")
                text = recognizer.recognize_google(
                        recorded_audio, 
                        language="en-US"
                    )
                with open("history.csv","a") as f:
                    f.write("{}".format(text))
                print("Successfully")
            except Exception as ex:
                print(ex)
            exit()
        cv2.imshow("Video",image)
        cv2.waitKey(1)
class Main(App):
    def build(self):
        self.al_speak = pyttsx3.init()
        self.getname = False
        main_layout = BoxLayout(orientation="vertical")
        button = Button(text='Click',size_hint=(.1, .1),pos_hint={'center_x': .5, 'center_y': .5})
        button.bind(on_press=self.get_name)
        self.textinput = TextInput(text='Hello world',size_hint=(.5, .5),pos_hint={'center_x': .5, 'center_y': .5})
        main_layout.add_widget(self.textinput)
        main_layout.add_widget(button)
        return main_layout
    def get_name(self, instance):
        if self.getname is False:
            self.getname = True
            self.al_speak.say("Hello {} raise one hand above your head to speak.".format(self.textinput.text))
            self.al_speak.say("Then, raise your other hand above your head to start searching.")
            self.al_speak.runAndWait()
            with open("history.csv","a+") as f:
                f.write("\n"+self.textinput.text+",")
        else:
            print("You have already enter the name!")
        main()
if __name__ == '__main__':
    app = Main()
    app.run()

Note:

+ Ngồi làm cả chiều muốn đập máy lắm đấy :)))

+ Không làm giống hoàn toàn đề bài được, mình chỉ làm được khi người dùng giơ tay vào khung hình thì sẽ bắt đầu ghi âm, sau 4 giây sẽ lưu dữ liệu (Định làm khi người dùng giơ tay lần nữa mới tắt ghi âm nhưng cái thư viện speech_recognition hôm nay cứ bị sao ý, không đặt giới hạn là không ghi âm được)

+ Định dùng pandas để xử lý file CSV nhưng lừa quá làm như file text luôn :)))

+ Các thư viện dùng: OpenCV, Mediapipe, Kivy, Pyttsx3, Speech_recognition (Cái này phải cày thêm cả Pyaudio nữa)

Thảo luận

-- Thi tin học trẻ tỉnh bảng B đứng thứ 10 từ trên xuống bảng D đứng cuối từ dưới lên :)
-- thử thách 6 ngày 6 đêm giải hết các câu hỏi của ông gét gô
-- Chắc chứ :v T không chỉ hỏi python đâu
-- mấy cái kia có học qua cứ thử thôi
-- Uh, vậy để t đặt thêm một vài câu c++, java, c#, javascript, php :)))
-- php, javascript thì hay dùng, toàn lập trình web mà nhưng 3 cái kia ít động
-- Hừm...đã học php với js rồi thì 3 cái kia đơn giản :v
-- Thôi thì...để đặt hết tất cả ngôn ngữ có trong ucode vậy :))

Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng (ảo). Với cách hiểu hiện nay, tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 7

Lớp 7 - Năm thứ hai ở cấp trung học cơ sở, một cuồng quay mới lại đến vẫn bước tiếp trên đường đời học sinh. Học tập vẫn là nhiệm vụ chính!

Nguồn : ADMIN :))

Copyright © 2021 HOCTAP247