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.

Các kiểu dữ liệu trong C ( int - float - double - char ...)
Thuật toán tìm ước chung lớn nhất trong C/C++
Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)
ComboBox - ListBox trong lập trình C# winforms
Random trong Python: Tạo số random ngẫu nhiên
Lệnh cin và cout trong C++
Cách khai báo biến trong PHP, các loại biến thường gặp
Download và cài đặt Vertrigo Server
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng