Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Tạo app ghi chú trong Python với nhận dạng giọng nói và API Notion
Trong hướng dẫn này, mình sẽ xây dựng một ứng dụng ghi chú bằng Python sử dụng Speech Recognition và API Notion.Ứng dụng sẽ chạy liên tục trong nền, lắng nghe đầu vào từ micro. Khi nhận được lệnh kích hoạt (activation command), ứng dụng sẽ ghi nhận lệnh thoại và lưu nó vào bảng Notion.
Sử dụng Speech Recognition và API Notion trong Python
Chúng ta sẽ sử dụng thư viện Speech Recognition để nhận dạng giọng nói và gTTS (Google Text-to-Speech) để ứng dụng có thể phản hồi bằng giọng nói.
Cài đặt thư viện cần thiết
Trước tiên, bạn cần cài đặt pyaudio. Trên Mac, cần thực hiện các lệnh bổ sung sau:
# Chỉ trên Mac: $ brew install portaudio $ pip install pyobjc $ pip install pyaudio
Lưu ý: Trên máy Mac M1, bạn cần lệnh này để cài pyaudio:
Bài viết này được đăng tại [free tuts .net]
$ python -m pip install --global-option='build_ext' \ --global-option='-I/opt/homebrew/Cellar/portaudio/19.7.0/include' \ --global-option='-L/opt/homebrew/Cellar/portaudio/19.7.0/lib' pyaudio
Cài đặt các thư viện còn lại:
$ pip install speechrecognition $ pip install requests gtts playsound
Code nhận dạng giọng nói
Tạo file main.py
và triển khai các chức năng nhận dạng giọng nói cơ bản.
Chúng ta sẽ xây dựng 3 hàm chính:
get_audio()
: Lắng nghe đầu vào từ micro.audio_to_text()
: Chuyển âm thanh thành văn bản.play_sound()
: Chuyển văn bản thành giọng nói và phát âm thanh phản hồi.
import speech_recognition as sr import gtts from playsound import playsound import os from datetime import datetime r = sr.Recognizer() # Lấy âm thanh từ micro def get_audio(): with sr.Microphone() as source: print("Nói gì đó...") audio = r.listen(source) return audio # Chuyển âm thanh thành văn bản def audio_to_text(audio): text = "" try: text = r.recognize_google(audio) except sr.UnknownValueError: print("Không hiểu được âm thanh.") except sr.RequestError: print("Lỗi kết nối API.") return text # Chuyển văn bản thành giọng nói def play_sound(text): try: tts = gtts.gTTS(text) tempfile = "./temp.mp3" tts.save(tempfile) playsound(tempfile) os.remove(tempfile) except AssertionError: print("Không thể phát âm thanh.")
Tích hợp vòng lặp chính
Ứng dụng sẽ chạy liên tục để:
- Lắng nghe lệnh kích hoạt.
- Sau đó, ghi nhận nội dung ghi chú và lưu trữ.
ACTIVATION_COMMAND = "hey sam" # Lệnh kích hoạt if __name__ == "__main__": while True: a = get_audio() command = audio_to_text(a) if ACTIVATION_COMMAND in command.lower(): print("Kích hoạt!") play_sound("Bạn cần tôi làm gì?") note = get_audio() note = audio_to_text(note) if note: play_sound(note) now = datetime.now().astimezone().isoformat() # TODO: Lưu ghi chú vào Notion
Thiết lập API Notion
Các bước thực hiện:
- Tạo Notion Integration và lưu API Key.
- Tạo cơ sở dữ liệu mới (database) và chia sẻ quyền truy cập với tích hợp đã tạo.
- Tạo bảng trong database với 3 cột:
- Description: Mô tả (Kiểu: Tiêu đề)
- Date: Ngày (Kiểu: Ngày)
- Status: Trạng thái (Kiểu: Văn bản)
Sử dụng API Notion trong Python
Tạo file notion.py
và viết một lớp client đơn giản để gửi yêu cầu POST lưu dữ liệu vào Notion:
import json import requests class NotionClient: def __init__(self, token, database_id): self.database_id = database_id self.headers = { "Authorization": "Bearer " + token, "Content-Type": "application/json", "Notion-Version": "2021-08-16" } # Hàm tạo trang mới trong Notion def create_page(self, description, date, status): create_url = 'https://api.notion.com/v1/pages' data = { "parent": { "database_id": self.database_id }, "properties": { "Description": { "title": [ {"text": {"content": description}} ] }, "Date": { "date": {"start": date, "end": None} }, "Status": { "rich_text": [ {"text": {"content": status}} ] } } } res = requests.post(create_url, headers=self.headers, data=json.dumps(data)) print(res.status_code) return res
Tích hợp API Notion vào ứng dụng
Thêm đoạn mã sau vào main.py
để sử dụng lớp NotionClient:
from notion import NotionClient # Nhập API Key và Database ID của bạn token = "YOUR_NOTION_API_KEY" database_id = "YOUR_NOTION_DATABASE_ID" client = NotionClient(token, database_id) if note: play_sound(note) now = datetime.now().astimezone().isoformat() res = client.create_page(note, now, status="Active") if res.status_code == 200: play_sound("Đã lưu ghi chú mới.")
Kết bài
Bây giờ, bạn đã có ứng dụng ghi chú hoạt động hoàn chỉnh với nhận dạng giọng nói và tích hợp Notion. Khi chạy, ứng dụng sẽ:
- Lắng nghe lệnh kích hoạt.
- Ghi nhận nội dung bạn nói.
- Lưu ghi chú đó vào cơ sở dữ liệu Notion của bạn.
Lưu Ý
- Đảm bảo bạn đã chia sẻ quyền truy cập cơ sở dữ liệu với tích hợp Notion.
- Kiểm tra cấu hình API Key và Database ID cẩn thận.