Đọc text với AVSpeechSynthesizer (Phần 1)

24

Ide Academy gửi đến các bạn bài hướng dẫn kỹ thuật đọc text với AVSpeechSynthesizer thuộc AVFoundation.

Đầu tiên, tạo 1 project Xcode mới và đặt tên là DemoTextToSpeech, ngôn ngữ mà chúng ta sử dụng là Swift.

Screen Shot 2016-11-10 at 13.55.28

Tiếp theo, vào main.storyboard, giao diện của chúng ta đơn giản chỉ gồm 1 UITextField và 1 UIButton như thế này:

Screen Shot 2016-11-10 at 13.56.56

Và chúng ta sẽ set thuộc tính CorrectionSpell Checking về No để bàn phím không gợi ý và sửa chính tả (điều này là không cần thiết trong project này).

Screen Shot 2016-11-10 at 14.18.56

Ý tưởng ở đây là chúng ta cho user nhập text bằng text field, sau đó user có thể nghe được những text mà họ đã nhập bằng cách click vào button Speak.

Tiếp theo, kết nối 2 đối tượng trên vào file Viewcontroller.swift và đặt tên cho chúng:

Ở trong file này, chúng ta cần import 1 framework nữa có tên là AVFoundation ngay phía dưới import UIKit:

Trong AVFoundation có 1 đối tượng có thể xử lý việc phát âm theo text đó chính là AVSpeechSynthesizer()

Chúng ta sẽ khởi tạo 1 biến đặt tên là speaker có giá trị là AVSpeechSynthesizer(). Chúng ta sẽ khai báo biến này ở vị trí global:

Sau đó, trong action của button Speak, chúng ta sẽ xử lý cho biến speaker làm việc như sau:

  1. Khởi tạo 1 biến hứng giá trị text từ textField của chúng ta.
  2. Khai báo 1 biến utterance có giá trị là class AVSpeechUtterance(). Class này giúp chúng ta cấu hình được những thứ như là: chuỗi text để đọc, giọng nói voice, tốc độ đọc rate (số càng lớn càng nhanh), độ trầm bổng pitchMultiplier (càng lớn càng bổng)
  3. Biến speaker sẽ làm việc phát âm thông qua method speak với tham số truyền vào là biến utterance

Project của chúng ta tới đây cơ bản đã hoàn tất, các bạn có thể build và run app trên máy ảo hoặc thiết bị thật để kiểm tra kết quả (lưu ý rằng AVSpeechSynthesizer không hỗ trợ tiếng Việt). Các bạn nhớ mở volume nhé 😉

Ngoài ra, để tuỳ chỉnh voice, Apple có hỗ trợ cho chúng ta 1 số language, để kiểm tra điều này, trong action của button Speak, thêm vòng lặp for như sau để in ra kết quả:

Run app và chú ý màn hình console sẽ in ra như sau:

Ở đây, các bạn chú ý 2 tham số quan trong là Language và Name. Với Language, chúng ta có thể truyền vào AVSpeechSynthesisVoice(language:) và Name sẽ giúp cho chúng ta biết được đây là giọng nam hay nữ. Với cách này chúng ta có thể tuỳ biến voice với cách đọc của nhiều ngôn ngữ và giọng đọc là nam hay nữ.

Trong phần tiếp theo, chúng ta sẽ mở rộng AVSpeechSynthesizer bằng cách thêm màu cho text khi đọc…

Lương Nhật Lâm © – IDE Academy