6 tháng đồng hành cùng AI cục bộ: Cách tôi tự động hóa biên bản cuộc họp bằng Whisper và Ollama

AI tutorial - IT technology blog
AI tutorial - IT technology blog

Cái “giá” của việc ghi chép thủ công

Sáu tháng trước, hệ thống tài liệu nội bộ của chúng tôi giống như một “hố đen”. Chúng tôi mất khoảng 12 giờ mỗi tuần cho “nợ đồng bộ” (sync-up debt)—thời gian dành cho các buổi xem xét kiến trúc và cuộc gọi với khách hàng mà kết quả là những bản ghi chép sơ sài hoặc đến chậm tận hai ngày.

Giống như hầu hết các trưởng nhóm kỹ thuật, tôi đã thử nghiệm các công cụ ghi chú AI dựa trên đám mây. Chúng rất bóng bẩy, nhưng chúng tôi đã vấp phải một rào cản lớn: phí đăng ký 30 USD/tháng cho mỗi người dùng và quan trọng hơn là các chính sách bảo mật nghiêm cấm việc gửi dữ liệu thô của khách hàng tới các máy chủ bên ngoài.

Tôi quyết định ngừng “thuê ngoài” quyền riêng tư của mình và tự xây dựng một quy trình ưu tiên lưu trữ cục bộ (local-first). Sau khi vận hành hệ thống này trong thực tế nửa năm, kết quả đã rõ ràng. Chúng tôi đã thay thế công việc thủ công bằng một quy trình dựa trên Python sử dụng Whisper của OpenAI để chuyển âm thanh thành văn bản và Ollama để tóm tắt. Đây không chỉ là một thử nghiệm kỹ thuật; đó là một cách thiết thực để giải phóng lịch trình của bạn trong khi vẫn giữ từng byte dữ liệu trên phần cứng của riêng mình.

Kiến trúc: Whisper + Ollama

Quy trình làm việc rất đơn giản: lấy một tệp âm thanh (MP4, MP3 hoặc WAV) và chuyển nó thành một tài liệu Markdown có cấu trúc. Để thực hiện việc này mà không cần đám mây, bạn cần hai công cụ chuyên dụng chạy trên máy của mình.

1. Chuyển giọng nói thành văn bản: OpenAI Whisper

Whisper là tiêu chuẩn ngành cho việc chuyển âm thanh thành văn bản cục bộ. Trong khi các thư viện cũ thường thất bại khi gặp giọng địa phương nặng hoặc tiếng ồn trong quán cà phê, kiến trúc Transformer của Whisper xử lý chúng một cách dễ dàng đến ngạc nhiên. Nó cung cấp nhiều kích cỡ mô hình khác nhau. Trong các thử nghiệm của tôi, mô hình ‘small’ đạt tỷ lệ chính xác 95% trên âm thanh tiếng Anh rõ ràng và chạy nhanh gấp khoảng 5 lần thời gian thực trên một GPU tầm trung.

2. Trí tuệ: Các LLM cục bộ qua Ollama

Các bản ghi thô thường rất lộn xộn. Mọi người hay nói lắp, nói đè lên nhau và chêm vào những từ đệm như ‘um’, ‘ah’. Để biến sự hỗn loạn này thành logic, bạn cần một Mô hình Ngôn ngữ Lớn (LLM). Tôi sử dụng Ollama để quản lý các mô hình của mình vì nó đóng gói Llama 3.1 hoặc Mistral thành một dịch vụ chạy nền với API đơn giản, giúp dễ dàng chuyển đổi các mô hình khi có những phiên bản tốt hơn được phát hành.

Thực hành: Xây dựng quy trình

Đây chính xác là bộ công cụ tôi đang chạy. Chúng tôi sử dụng Python làm “chất keo” kết nối. Về phần cứng, một GPU NVIDIA với ít nhất 8GB VRAM là lựa chọn lý tưởng, mặc dù bạn có thể chạy hệ thống này trên chip Mac M-series đời mới với kết quả tuyệt vời.

Bước 1: Thiết lập môi trường

Đầu tiên, hãy cài đặt các thư viện cốt lõi. Bạn sẽ cần công cụ openai-whisper và thư viện ollama.

# Cài đặt Whisper và các phụ thuộc
pip install openai-whisper setuptools-rust

# Cài đặt thư viện Ollama cho Python
pip install ollama

# ffmpeg là công cụ xử lý âm thanh cốt lõi
# Linux: sudo apt install ffmpeg | Mac: brew install ffmpeg

Bước 2: Chuyển âm thanh thành văn bản với Whisper

Script này khởi tạo mô hình Whisper và xử lý bản ghi của bạn. Tôi khuyên dùng ‘base’ để gỡ lỗi nhanh và ‘small’ cho các ghi chú thực tế hàng ngày.

import whisper

def transcribe_audio(file_path):
    # 'small' là sự cân bằng tốt nhất giữa VRAM và độ chính xác
    model = whisper.load_model("small")
    
    print("Đang chuyển âm thanh thành văn bản... (thường mất 1/5 thời lượng file âm thanh)")
    result = model.transcribe(file_path)
    
    return result["text"]

# Ví dụ sử dụng
# transcript = transcribe_audio("sprint_planning.mp4")

Bước 3: Trích xuất giá trị với Ollama

Khi đã có văn bản, bạn cần làm sạch nó. Bí quyết nằm ở câu lệnh (prompt). Bạn muốn AI đóng vai trò như một thư ký kỹ thuật tận tâm, chứ không phải một người viết văn sáng tạo.

import ollama

def generate_minutes(transcript):
    prompt = f"""
    Nhiệm vụ: Tóm tắt bản ghi cuộc họp kỹ thuật này sang định dạng Markdown.
    Quy tắc: Ngắn gọn. Ưu tiên các quyết định thay vì chuyện phiếm.
    
    Bao gồm:
    - Mục tiêu chính
    - Các quyết định kỹ thuật quan trọng
    - Các vướng mắc chưa giải quyết
    - Các đầu việc cần làm (Người phụ trách + Thời hạn)
    
    Bản ghi:
    {transcript}
    """
    
    response = ollama.generate(model='llama3.1', prompt=prompt)
    return response['response']

Bước 4: Trình xử lý hàng loạt

Tôi thường chạy công cụ này dưới dạng CLI. Nó theo dõi một thư mục cụ thể và xử lý các bản ghi qua đêm. Theo cách này, khi tôi đăng nhập vào lúc 9 giờ sáng, hộp thư đến của tôi đã đầy các bản tóm tắt Markdown từ các cuộc gọi của ngày hôm trước.

Bài học sau 6 tháng vận hành thực tế

Xây dựng công cụ thì dễ; làm cho nó hoạt động ổn định cho cả một nhóm mới khó. Đây là ba điểm mấu chốt mà chúng tôi đã giải quyết:

1. Rào cản VRAM

Whisper và các LLM rất ngốn bộ nhớ. Nếu bạn cố gắng chạy chúng đồng thời trên một card đồ họa 8GB, hệ thống của bạn có khả năng sẽ bị treo. Tôi nhận thấy rằng việc tải mô hình Whisper, hoàn tất việc chuyển văn bản, sau đó xóa đối tượng mô hình một cách rõ ràng trước khi gọi Ollama sẽ ngăn chặn được 99% các lỗi sập nguồn.

2. Vấn đề “Ai nói gì”

Whisper tiêu chuẩn tạo ra một “bức tường văn bản” mà không có tên người nói. Đối với các cuộc họp từ 2-3 người, Llama 3.1 có khả năng nhận diện người nói dựa trên ngữ cảnh cực kỳ tốt (ví dụ: ‘Tôi sẽ đẩy hình ảnh Docker lên’ rõ ràng là của trưởng nhóm DevOps). Với các nhóm lớn hơn, tôi khuyên bạn nên tích hợp faster-whisper với pyannote-audio để thêm tính năng phân tách người nói (speaker diarization) chính xác.

3. Tối ưu hóa câu lệnh (Prompt) triệt để

Những bản tóm tắt ban đầu của tôi khá hời hợt. Chúng bao gồm cả những thứ như ‘Nhóm đã trao đổi xã giao.’ Không ai cần đọc điều đó cả. Tôi đã cập nhật câu lệnh hệ thống thành: ‘Bỏ qua tất cả các nội dung xã giao. Nếu một câu không dẫn đến quyết định hoặc đầu việc cụ thể, hãy loại bỏ nó.’ Hiệu quả ghi chú của chúng tôi đã tăng gấp ba lần chỉ sau một đêm.

Kết luận

Từ bỏ đám mây để chuyển sang bộ công cụ Whisper và Ollama cục bộ là cải tiến quy trình làm việc tốt nhất mà tôi đã thực hiện trong năm qua. Nó đã xóa tan nỗi lo về quyền riêng tư và chấm dứt tình trạng vắt óc nhớ lại những gì đã xảy ra trong các cuộc họp thứ Sáu vào sáng thứ Hai tuần sau. Mặc dù đòi hỏi chi phí đầu tư ban đầu cho một GPU ổn và vài giờ lập trình Python, nhưng thành quả nhận được là một thư ký riêng tư, vĩnh viễn và không thu phí hàng tháng. Nếu bạn làm việc với mã nguồn nhạy cảm hoặc dữ liệu khách hàng, đây không chỉ là một lựa chọn—đó là một sự cần thiết.

Share: