Blog

Ứng dụng AI bùng nổ trong marketing

431

Trong tương lai, khi công nghệ là chìa khoá để thành công thì mọi doanh nghiệp dù lớn hay nhỏ thì việc áp dụng công nghệ cũng góp phần không nhỏ trong việc tăng cường kết nối, tìm hiểu và đáp ứng nhu cầu của khách hàng nhanh chóng và kịp thời. Bài viết sau đây sẽ giúp quý độc giả hiểu hơn về các ứng dụng của trí tuệ nhân tạo trong lĩnh vực Marketing.

Phân tích hành vi khách hàng khách hàng

Theo các báo cáo gần đây của WeAreSocial và Hootsuite, ước tính đến năm 2019, đã có 64 triệu người tiếp cận với Internet trong khi đó có đến số người tiếp cận mạng xã hội vẫn vẫn tiếp tục phát triển với 62 triệu người dùng. Như vậy trung bình cứ mỗi một người Việt Nam lại có ít nhất 1 mạng xã hội. Điều này mở ra một con đường mới cho các doanh nghiệp khi họ có thể tiếp cận với khách hàng mục tiêu của mình.

(Nguồn: WeAreSocial và Hootsuite) Thống kê số lượng người sử dụng MXH tại Việt Nam.

Để khai thác được một lượng thông tin khách hàng khổng lồ trên mạng xã hội, những ứng dụng của trí tuệ nhân tạo ra đời với các ứng dụng Social Listening như Google Analytics hay Reputa của Viettel AI ra đời. Bằng cách thuật toán phức tạp, những ứng dụng này giúp doanh nghiệp thu thập, phân tích thông tin trên nền tảng mạng xã hội, từ đó giúp quản lý thương hiệu, nắm bắt được tâm lý, hành vi, nhu cầu và chăm sóc khách hàng trên các kênh Internet và mạng xã hội một cách hiệu quả hơn.

cover 02

( Nguồn Reputa) REPUTA đánh giá mức độ hiệu quả của chiến dịch tết

Sau khi phân tích được dữ liệu khách hàng, các thương hiệu có thể dễ dàng lên kế hoạch cụ thể như ra mắt chiến dịch quảng cáo trên nền tảng số nào, đối tượng khách hàng mục tiêu là ai, sẽ mời ai sẽ là người đại diện, ngày giờ ra mắt cụ thể. Tất cả những thông tin này đều xuất phát từ việc phân tích dữ liệu khách hàng.

ViettelPay đồng hành cùng Hoàng Thuỳ Linh, Đen Vâu và JustaTeee

Chiến dịch tết của ViettelPay là một ví dụ điển hình về việc sử dụng thành công mạng xã hội để tăng cường mức độ nhận biết và chuyển đổi khách hàng sử dụng sản phẩm. Với MV “Làm gì mà hốt” vượt mốc 3 triệu view chỉ sau 3 ngày ra mắt. Đây không phải là một thành công khó đoán khi mà những cái tên tham gia vào chiến dịch này của Viettel Pay là JustaTee, Hoàng Thùy Linh và Đen Vâu đang nhận được rất nhiều sự quan tâm của cộng đồng mạng. Bên cạnh đó việc đưa chiến dịch vào đúng thời điểm tết đến đánh vào tâm lý khách hàng sợ Tết với quá nhiều thứ phải chi tiêu. Qua đó dịch vụ ViettelPay của Viettel đã bật lên với vai trò giúp mọi người xoá đi nỗi ám với mùa tết đến. Một chiến dịch thành công khi đội ngũ Marketing của Viettel đã biết được chính xác khách hàng mục tiêu của mình muốn gì, họ đang trăn trở ra sao và đưa ra giải pháp kịp thời.

Chatbot hỗ trợ trải nghiệm khách hàng

Các ứng dụng của chatbot ngày nay rất đa dạng, và trở thành ứng dụng yêu thích của nhiều ngành hàng khác nhau bởi khả năng đa dạng của nó trong việc tiếp cận và giao tiếp với khách hàng. Bằng việc kết hợp phần mềm xử lý ngôn ngữ tự nhiên (Natural Language Processing), chatbot hoàn toàn có trả lời tự động bằng văn bản các câu hỏi mà khách hàng đưa ra từ đó nâng cao trải nghiệm của khách hàng và rút ngắn thời gian chờ đợi. Đồng thời, sử dụng Chatbot cũng góp phần cá nhân hoá trải nghiệm của khách hàng bằng việc nhớ tên, dữ liệu thông tin khách hàng ngay từ lần đầu tiên, từ đó giúp phản hồi lại khách hàng một cách nhanh và chính xác trong các lần tiếp theo. Bên cạnh đó, sử dụng Chatbot còn góp phần tăng khả năng tương tác, kéo dài cuộc hội thoại, xây dựng sợi dây liên kết với khách hàng.

AI sáng tạo nội dung quảng cáo

Bằng các ứng dụng học sâu và xử lý ngôn ngôn ngữ tự nhiên (Natural Language Processing), AI cho phép công nghệ máy tính dần hiểu được ngôn ngữ của con người bằng cách học hỏi từ nhiều lĩnh vực khác nhau bao gồm khoa học máy tính và ngôn ngữ học máy tính và  hoàn toàn có thể cho ra những nội dung quảng cáo tương thích cho từng đối tượng khách hàng qua đó góp phần cá nhân hoá nội dung quảng cáo, xây dựng mối quan hệ với khách hàng tốt hơn.

Chủ đề cũng vừa được thảo luận trong chuỗi sự kiện AI ON AIR trong Viettel AI tổ chức với chủ đề AI ON AIR: How Big Data and AI are connected với phần chia sẻ của anh Đinh Trần Tuấn Linh, Chủ tịch Hội đồng quản trị Urah Network, Founder UNIKON với chủ đề AI-powered Multimedia Content Generation đã đưa ra những sáng kiến giải pháp xây dựng nội dung sáng tạo dựa trên nền tảng trí tuệ nhân tạo.

Trước sự phát triển của khoa học công nghệ nói chung và Trí tuệ nhân tạo nói riêng, việc ứng dụng các thành tựu của công nghệ là kinh doanh, đặc biệt là trong các hoạt động Marketing là điều tất yếu. Viettel AI đã và đang xây dựng thành công các sản phẩm trí tuệ nhân tạo góp phần xây dựng một nền tảng số hoá vững mạnh cho các doanh nghiệp có nhu cầu khai thác và phát triển như dịch vụ Tổng hợp tiếng nói (Text to Speech), Nhận dạng tiếng nói ( Speech to Text), Xử lý ngôn ngữ tự nhiên (NLP)  giúp giao tiếp với khách hàng tự động thông với ngôn ngữ tự nhiên, ngắt nghỉ tự động kết hợp biểu cảm chính xác hay sản phẩm Reputa giúp phân tích dữ liệu người dùng trên các nền tảng mạng xã hội, qua đó hữu ích trong việc dự báo, lên kế hoạch và triển khai các hoạt động Marketing.

Để hiểu rõ hơn về các sản phẩm của Viettel AI, tại sao bạn không đăng ký sử dụng ngay. Cách thức đăng ký rất đơn giản:

  1. Truy cập website:https://viettelgroup.ai/register

  2. Điền đầy đủ thông tin tài khoản

Công Nghệ

Viettel AI chính thức cán mốc 11 giọng đọc nhân tạo chỉ trong thời gian ngắn

1175

Trong những năm gần đây, các ứng dụng của giọng nói nhân tạo ngày càng được quan tâm bởi những giá trị thực tiễn mà nó mang lại như ứng dụng trong hệ thống tổng đài chăm sóc khách hàng, các chốt thông báo, thuyết minh ở các địa điểm tham quan, du lịch, hay các hệ thống phát thanh trong các lĩnh vực công cộng như giao thông, y tế, đọc báo.

Viettel AI chính thức cán mốc 11 giọng đọc nhân tạo chỉ trong thời gian ngắn

Trải qua một quá trình nghiên cứu và phát triển sản phẩm, đến nay dịch vụ tổng hợp tiếng nói (text to speech) của Viettel AI đã đạt được những bước phát triển vượt bậc. Về mặt công nghệ, các kỹ sư nhóm xử lý tiếng nói của Viettel AI đã sử dụng công nghệ hiện đại nhất trong lĩnh vực trí tuệ nhân tạo như mạng nơron học sâu để cho ra đời tiếng nói tiếng Việt với ngữ điệu tự nhiên, đa dạng và dễ dàng tích hợp trên các hệ thống. Bằng việc sử dụng công nghệ học sâu (deep learning) hiện đại thay thế cho những bài toán kỹ thuật lâu đời như HMM (Hidden Markov Model) hay ghép nối các từ… qua đó giúp giọng đọc nhân tạo của Viettel AI được tự nhiên, liền mạch, ngắt nghỉ hợp lý, kết hợp với biểu cảm chính xác dựa vào ngữ cảnh trong câu.

Mô phỏng dịch vụ Tổng hợp tiếng nói vủa Viettel AI

Bên cạnh đó, giọng đọc tiếng Việt do Viettel AI tạo nên cũng rất đa dạng, có ngữ điệu tự nhiên, đa dạng vùng miền, dễ dàng tích hợp trên mọi hệ thống với cả chất giọng đọc báo lẫn đọc truyện với cả 3 miền: 5 giọng miền Bắc (3 giọng nữ, 2 giọng nam), 4 giọng miền Nam (3 giọng nữ, 1 giọng nam), 2 giọng miền Trung (1 giọng nữ, 1 giọng nam) với khả năng đáp ứng nhanh chóng một lúc số lượng lớn các máy chủ mạnh với công nghệ tính toán song song cho phép đáp ứng nhanh chóng mọi yêu cầu của khách hàng, ngay cả trong trường hợp tải tăng đột biến.

Ứng dụng chuyển đổi văn bản thành giọng nói Tiếng Việt của Viettel AI có thể dễ dàng ứng dụng trong nhiều lĩnh vực khác nhau như áp dụng vào hệ thống thông báo, IoT, Robotics. Hay hỗ trợ các hệ thống thông báo, phát thanh, hướng dẫn tại sân bay, đài truyền hình, bệnh viện hoặc Smart Home… Hay đáp ứng nhu cầu thuyết minh, trả lời khách hàng qua tổng đài tự động. Qua đó giúp tiết kiệm chi phí, thời gian, tăng năng suất và chất lượng cho các dịch vụ thuyết minh, bán hàng hoặc CSKH qua điện thoại qua đó giúp doanh nghiệp tự động hoá quá trình cung cấp sản phẩm dịch vụ nâng cao hiệu quả của hoạt động sản xuất kinh doanh. Bên cạnh đó, một ứng dụng khá phổ biến của công nghệ này là khả năng đọc nội dung trong sách hay một tờ báo online với nhiều giọng đọc khác nhau, tùy theo nhu cầu của người sử dụng. Qua đó, cho phép người dùng lắng nghe nội dung trực tiếp trên các trang sách báo trên Internet hoặc khi đi đường, lái xe, đi tàu, hỗ trợ người khiếm thị và người lớn tuổi có thể cập nhập thông tin dễ dàng.

Bạn có thể trải nghiệm ngay khả năng đa dạng giọng đọc của công nghệ Text to Speech đến từ Viettel AI qua link sau:

    1.Truy cập website: https://viettelgroup.ai/register

  1. Điền đầy đủ thông tin tài khoản
Blog

AI và Big Data hỗ trợ hoạt động nông nghiệp

1433

Ứng dụng của AI và Big Data ngày càng đa dạng, hỗ trợ nhiều hoạt động trong cuộc sống của con người. Mới đây, Trung Quốc đã áp dụng Robot và Big Data nhằm đưa ra các giải pháp hỗ trợ hoạt động nông nghiệp. Đây được xem là giải pháp mang tính lâu dài bởi không chỉ giúp nền kinh tế nước này tăng trưởng mà còn là cầu nối rút ngắn khoảng cách giàu nghèo trong xã hội Trung Quốc.

Việc số hoá các hoạt động nông nghiệp có thể giúp tăng trưởng thu nhập trung bình mà còn nâng cao đời sống của người dân địa phương. Qua đó, giúp lan tỏa làn sóng phát triển kinh tế ở nhiều nơi.

Dự báo các hiện tượng tự nhiên

Trước khi có sự tham gia của các khoa học công nghệ, người nông dân phải tự dự đoán được những yếu tố rủi ro về thời tiết, thiên tai, sâu dịch, bệnh,….Nếu dự báo sai hoặc dự báo quá muộn, nhừng yếu tố này hoàn toàn có thể gây ảnh hưởng nghiêm trọng tới năng suất vụ mùa, khó có thể khắc phục. Hoặc tệ hơn, có thể khiến bà con nông dân mất trắng, gây ảnh hưởng nền kinh tế địa phương nói chung và đời dống người nông dân nói riêng.

Kết quả hình ảnh cho ai and big data in agriculture

Nhưng với Big Data và AI, những dữ liệu của mùa vụ trước sẽ được thu thập (bao gồm năng suất, tình hình khí hậu, thổ nhưỡng,…) sẽ được hệ thống hoá thông qua Data Science và các thuật toán, những thông tin có được có thể giúp người nông dân đưa ra các giải pháp cải thiện mùa vụ tiếp theo.

Kết quả hình ảnh cho ai and big data in agriculture

Xác định loại cây phù hợp

Để xác định xem liệu loại cây này có phù hợp với địa phương hay không, chúng ta thường phải gieo giống rồi chờ cây nảy mầm, sau đó mới xác định năng suất của nó. Đây luôn là một quá trình dài và tốn thời gian. Tuy nhiên, với sự hỗ trợ từ Big Data, người nông dân có thể đưa ra những dự tính về loại cây nào sẽ phù hợp với tình trạng đất, thời tiết nơi nuôi trồng chính xác hơn, từ đó, tiết kiệm được thời gian thử nghiệm và tăng năng suất nuôi trồng.

Tự động hóa trong nông nghiệpNhờ vào sự tiến bộ trong AI và Big Data, các thiết bị tự động ra đời như máy móc cắt cỏ, robot thay con người hái hoa quả theo mệnh lệnh con người,… đã ra đời và ngày càng được hoàn thiện. Máy bay không người lái được tạo ra với các cảm biến để cập nhật dữ liệu, theo dõi sự phát triển của cây trồng và thông báo các khu vực cần cải thiện. Ngoài ra, robot cũng được sử dụng ở nhiều nơi để trồng ngô, nhặt cỏ dại.

Là một trong số những đơn vị tiên phong xây dựng và tạo ra nền tảng AI cho doanh nghiệp, đại diện Viettel AI cho biết, với mục tiêu mang đến sản phẩm hoàn thiện nhất đến tay người dùng các sản phẩm của Viettel AI trong tương lai sẽ là giải pháp thực tiễn nhằm thực hiện cuộc cách mạng nông nghiệp hoá, hiện đại hóa đất nước.

Để hiểu rõ hơn về các sản phẩm của Viettel AI, tại sao bạn không đăng ký sử dụng ngay. Cách thức đăng ký rất đơn giản:1. Truy cập website:https://viettelgroup.ai/.2. Nhấn nút đăng ký tại góc trái màn hình.3. Điền đầy đủ thông tin tài khoản

Blog

Chatbot- “Cánh tay phải” đắc lực mới cho ngành y tế

852

Tự động hóa các hoạt động chăm sóc khách hàng, từ lâu, đã không còn là chuyện xa lạ với các trang thương mại điện tử. Song, việc áp dụng chatbot vào các ngành có tính chuyên môn cao như ngành y tế vẫn còn là điều khá mới đối với nhiều người.

Trên thực tế, ở Việt Nam, chatbot đã dần dần nhận được sự tín nhiệm không nhỏ từ 1 số bệnh viện lớn trực thuộc trung ương và thậm chí là cả Bộ Y Tế. Điển hình như, vào mùa đại dịch COVID-19 này, Viettel AI đã phát triển 1 hệ thống chatbot dựa theo đơn đặt hàng của Bộ Y Tế trên các nền tảng như trang web thông tin, trang Facebook Sức khỏe Toàn dân và ứng dụng Sức khỏe Việt Nam. Chatbot này đã được Viettel AI làm theo yêu cầu của Bộ Y Tế nhằm hỗ trợ người dân có thể tiếp cận và nhận tư vấn từ 1 nguồn thông tin chính thống 24/7 mà không cần phải đích thân đi ra các trạm y tế, bệnh viện, tránh việc tiếp xúc nơi đông người.

Để hiểu sâu hơn, trước tiên, hãy cùng Viettel AI nhìn qua định nghĩa sơ bộ của chatbot. Chatbot là một chương trình máy tính được lập trình sẵn để có khả năng hội thoại với khách hàng trên các nền tảng trực tuyến từ web đến các trang mạng xã hội. Chatbot đối thoại với từng người dùng dưới dạng tin nhắn và theo mẫu câu trả lời, kịch bản hội thoại được cài đặt riêng thích hợp với từng doanh nghiệp, cơ quan.

Bằng việc sử dụng chatbot trong ngành y tế, các nhân viên chăm sóc sức khỏe có thể nhanh chóng cải thiện hiệu suất làm việc bằng việc cắt giảm đi rất nhiều bước trước khi tình trạng của bệnh nhân đến tay họ. Đây là điểm thu hút của chatbot trong thời buổi số người bệnh đến các bệnh viện, phòng khám ngày càng đông. Bởi lẽ, các bệnh viện này sẽ giảm được rất nhiều chi phí không chỉ cho việc thuê nhân viên trả lời tin nhắn của người bệnh qua các trang trực tuyến mà còn cắt giảm chi phí, thời gian cho việc ghi và lưu trữ lại các dữ liệu này.

Trở lại với trường hợp thực tế của Viettel AI và Bộ Y Tế, chatbot của Viettel AI hiện có khả năng cung cấp từ những thông tin đơn giản như nguồn gốc, triệu chứng bệnh, cách liên hệ với các cơ sở y tế gần nhất… đến các thông tin cần cập nhật kịp thời như số người nhiễm hiện tại. Với cơ sở dữ liệu được xây dựng từ những tài liệu được cung cấp bởi Bộ Y Tế, những thông tin chatbot cung cấp cho người dùng là hoàn toàn chính xác, có độ tin cậy cao và được cập nhật thường xuyên. Hơn thế, thay vì đòi hỏi nhân viên y tế phải luôn túc trực trên các trang mạng để giải đáp các thắc mắc của người dân một cách nhanh nhất, chatbot có thể thay các nhân viên này trả lời người dùng bất kể ngày đêm và thậm chí còn nhanh hơn người.

Chatbot của Viettel AI trả lời câu hỏi câu người dân trên app Sức khỏe Việt Nam

Ngoài ra, phong phú hơn, đối với một số trường hợp chatbot có một cơ sở dữ liệu đủ lớn, chatbot còn có thể giúp người bệnh kiểm tra các thông tin của từng loại thuốc như công dụng và tác dụng phụ. Bên cạnh đó, một số chatbot còn có khả năng đặt lịch hẹn khám cũng như kiểm tra khung giờ hẹn sẵn có của các bác sĩ người bệnh chỉ định.

Trên thế giới, trong tương lai không xa, người bệnh có thể trò chuyện với 1 chatbot có khả năng xác định triệu chứng bệnh, đưa ra những gợi ý về tình trạng bệnh và ưu tiên sắp xếp cuộc hẹn của người này với bác sĩ ngay trong ngày hôm sau nếu tình trạng bệnh đang trong tình trạng xấu. Điều này không chỉ có thể giảm thời gian chờ của người bệnh ở bệnh viện mà còn giúp cho các y sĩ, hộ tá dễ dàng hơn trong việc sắp xếp lịch khám.

Mô hình nguyên lý hoạt động của Chatbot của Viettel AI

Nguyên lý hoạt động của Cyberbot của Viettel AI  nói chung và Chatbot nói riêng được tóm tắt qua mô hình trên. Hệ thống quản lý khách hàng của doanh nghiệp thường đi từ cổng nhận tin, nơi sẽ tiếp nhận và trao đổi các luồng chat của người dùng từ các nguồn như website live chat, các messenger (Facebook, Skype…), các ứng dụng mobile của doanh nghiệp.

Các tin nhắn này sau đó được quản lý, phân nhóm khách hàng, giám sát và phân chia trên hệ thống cho các tư vấn viên chăm sóc và tư vấn sâu hơn. Còn các hội thoại cần chatbot xử lý sẽ được đẩy về Cyberbot System. Ở cổng trả lời của tư vấn viên, khách hàng được tư vấn viên hỗ trợ và xử lý, sau đó, các cuộc hội thoại chuyển cho các bộ phận chuyên môn.

Chatbot truy vấn dữ liệu các sản phẩm của doanh nghiệp qua Product Service, làm cơ sở để cung cấp thông tin tự động cho khách hàng. Chatbot cũng có thể tương tác, gọi thực hiện các nghiệp vụ được phép (đăng ký thông tin, cập nhật thông tin…) qua  Business Service. Trong trường hợp không có tư vấn viên hỗ trợ ngay lúc đó, chatbot có thể ghi nhận lại cuộc hội thoại với khách hàng và đẩy tới CRM Service để tư vấn viên xử lý sau.

Tại nước ta, chatbot ngày nay vẫn đang đóng một vai trò khá nhỏ trong ngành y, tuy vậy, với sự gia tăng nhanh chóng trong số lượng các cơ sở y tế áp dụng hình thức này vào việc chăm sóc người bệnh thì chẳng bao lâu nữa, người dùng tại Việt Nam sẽ quen dần với chatbot và sử dụng chúng thường xuyên hơn. Chi phí vận hành và nhân sự của các bệnh viện cũng sẽ được cắt giảm không ít, giúp bệnh viện tập trung nguồn lực vào các công tác khác như chữa trị và nghiên cứu.

Bạn cũng có thể thử ngay khả năng của chatbot được phát triển bởi Viettel AI bằng các bước đơn giản sau: 

  1. Truy cập trang web: https://cyberbot.vn/
  2. Điền thông tin.
Blog

Công cụ biến cả cuộc hội thoại thành văn bản nằm gọn trong điện thoại bạn

535

Ứng dụng Viettel Voice Note sẽ là trợ thủ đắc lực cho bạn trong tình huống có quá nhiều thứ cần nghe nhưng lại không có đủ thời gian đề ghi chép lại.

Viettel Voice Note - Ứng dụng ghi chú hội thoại thông minh bằng giọng nói Tiếng Việt

Với giao diện sáng, dễ nhìn, dễ điều hướng, Viettel Voice Note hiện đã có mặt trên cả 2 nền tảng iOS và Android, và có thể được tải về hoàn toàn miễn phí trên AppStore và Google Play.

Viettel Voice Note là ứng dụng được tích hợp công nghệ Speech to Text đến từ Viettel AI có khả ghi âm và chuyển đổi file ghi âm đó thành văn bản tức thì theo thời gian thực. 

Mỗi lần họp hành, nhất là khi có ai đó phát biểu, lại phải cặm cụi ngồi ghi chép biên bản cuộc họp, sau mỗi cuộc họp lại phải ngồi đánh máy lại tất cả những gì bạn vừa ghi lúc nãy và chỉnh lý lại để gửi lại các đồng nghiệp và sếp. Bạn có thấy bức tranh này quen thuộc không nào?

Đúng vậy, chính vì điều này mà những cuộc họp dài luôn trở thành ác mộng đối với những ai được giao trách nhiệm ghi lại nội dung cuộc họp. 

Thấu hiểu vấn đề nan giải này, Viettel AI đã cho ra mắt ứng dụng miễn phí Viettel Voice Note vừa hỗ trợ ghi âm vừa ghi lại file ghi âm đó dưới dạng văn bản trên thiết bị di động của bạn. Bản ghi này còn có thể dễ dàng được chia sẻ từ ứng dụng sang email và các trang mạng xã hội như Facebook, Zalo… 

Giao diện của Viettel Voice Note trên Android

Người dùng cũng có thể dễ dàng tìm kiếm từ khóa trong bản ghi để không phải nghe lại toàn bộ cuộc ghi âm chỉ để tìm nội dung đó. Ngoài tính tiết kiệm thời gian, ứng dụng Viettel Voice Note còn có thể tự động ngắt đoạn theo từng khoảng thời gian giúp người dùng dễ dàng theo dõi nhịp hội thoại.

Theo thử nghiệm, khả năng nhận dạng giọng nói của Viettel Voice Note đạt độ chính xác ở mức 95%. Tuy chưa thể đạt đến độ chính xác hoàn hảo, song, ứng dụng chủ động hỗ trợ người dùng thay đổi, chỉnh sửa các từ trong văn bản mà Viettel Voice Note chưa xử lí được chính xác và tô cam từ đó để người dùng dễ dàng nhận biết.

Bên cạnh đó, ứng dụng cũng có tính năng phòng trường hợp người dùng lỡ tay xóa nhầm các đoạn ghi âm, cuộc họp quan trọng. Người dùng có thể bấm vào biểu tượng cài đặt ở góc phải bên dưới màn hình, sau đó chọn mục “Đã xóa gần đây” và chọn khôi phục lại các bản ghi bị xóa nhầm. Bản ghi bị xóa của người dùng sẽ được lưu trữ ở mục này trong vòng 30 ngày trước khi bị xóa vĩnh viễn.

Không chỉ bị giới hạn ở việc chuyển đổi bản ghi âm thành văn bản các buổi họp nơi công sở, ứng dụng Viettel Voice Note còn có thể được áp dụng trong nhiều lĩnh vực khác như y tế, giáo dục, tài chính, luật… Ví dụ như trong môi trường giáo dục, học sinh/ sinh viên có thể dùng ứng dụng này để ghi lại bài giảng của giáo viên trên lớp. Đối với ngành luật, việc ghi chép lại các văn bản cho từng phiên tòa cũng đang trở nên dễ dàng hơn bao giờ hết với ứng dụng công nghệ đến từ Viettel AI.

Ứng dụng Viettel Voice Note được tích hợp công nghệ nhận dạng tiếng nói (Speech to Text) được đội ngũ Viettel AI nghiên cứu và phát triển, có độ chính xác cao, khả năng xử lý nhanh chóng tiếng nói và ghi chúng lại dưới dạng văn bản. 

Các bạn có thể tải ứng dụng Viettel Voice Note miễn phí qua các link sau: 

Tài Liệu Kỹ Thuật

Xử Lý Ngôn Ngữ Tự Nhiên ⚡ API NLP

653

Best APIs Online for Natural Language Processing in 2022

API NLP – Spell Checking (Sửa lỗi chính tả)


  • URLhttps://viettelgroup.ai/nlp/api/v1/spell-checking
  • MethodPOST
  • Header Parameters1. header "Content-Type: application/json"2. header "token: token_id"

    Để có "token id" bạn có thể đăng ký tài khoản tại viettelgroup.ai, sau đó login, rồi vào menu token để tạo

Định dạng data gửi lên: Json (default)

{
    "sentence": input text
}

Trong đó: sentence là câu văn cần kiểm tra

Success Response

Code: 200
Content: Json array

Json array, mỗi phần tử là một từ có khả năng bị lỗi, gợi ý sửa lỗi và vị trí của từ này trong câu:

[ 
   { 
      "startIndex":0,
      "endIndex":3,
      "originalText":"Hơm",
      "suggestion":"Hôm",
      "confidence":1
   }
]

Mô tả các tham số

API nhận đầu vào là một câu văn, đưa ra danh sách các từ có khả năng bị lỗi (chính tả, teencode, typo, viết tắt…), đưa ra các gợi ý sửa lỗi

Thuộc tính Value Description
startIndex int Vị trí bắt đầu của từ trong câu
endIndex int Vị trí kết thúc của từ trong câu
originalText string Từ bị lỗi
suggestion string Gợi ý sửa lỗi
confidence int Mức độ chắc chắn (mặc định là 1)

Example Output

Success

{ 
   "code":0,
   "message":"OK",
   "result":{ 
      "suggestions":[ 
         { 
            "startIndex":0,
            "endIndex":3,
            "originalText":"Hơm",
            "suggestion":"Hôm",
            "confidence":1
         },
         { 
            "startIndex":8,
            "endIndex":10,
            "originalText":"lầ",
            "suggestion":"là",
            "confidence":1
         },
         { 
            "startIndex":11,
            "endIndex":14,
            "originalText":"mot",
            "suggestion":"một",
            "confidence":1
         },
         { 
            "startIndex":15,
            "endIndex":19,
            "originalText":"ngay",
            "suggestion":"ngày",
            "confidence":1
         },
         { 
            "startIndex":20,
            "endIndex":23,
            "originalText":"dẹp",
            "suggestion":"đẹp",
            "confidence":1
         },
         { 
            "startIndex":24,
            "endIndex":30,
            "originalText":"trowif",
            "suggestion":"trời",
            "confidence":1
         }
      ]
   }
}

Failure

{ 
   "code":3,
   "message":"Request format is invalid!"
}

API NLP – Name Entity Recognition (Nhận dạng tên thực thể)


  • URLhttps://viettelgroup.ai/nlp/api/v1/ner
  • MethodPOST
  • Header Parameters1. header "Content-Type: application/json"2. header "token: token_id"

    Để có "token id" bạn có thể đăng ký tài khoản tại viettelgroup.ai, sau đó login, rồi vào menu token để tạo

Định dạng data gửi lên: Json (default)

{
    "sentence": "input text"
}

Trong đó: sentence là câu văn cần thực hiện nhận dạng thực thể

Success Response

Code: 200
Content: Json array

Mô tả các tham số

API nhận đầu vào là một câu văn, đưa ra danh sách các thực thể và vị trí của thực thể đó trong câu.

Thuộc tính Value Description
word string từ trong câu
type Int kiểu thực thể
start_index Int vị trí bắt đầu tiếng trong câu văn
end_index Int vị trí kết thúc tiếng trong câu

Example Output

Success

{ 
   "code:":0,
   "message":"OK",
   "result":[ 
      { 
         "end_index":7,
         "start_index":0,
         "type":"ORG_Corporation",
         "word":"Viettel"
      },
      { 
         "end_index":51,
         "start_index":18,
         "type":"ORG_Other",
         "word":"trực thuộc Bộ Quốc Phòng Việt Nam"
      },
      { 
         "end_index":74,
         "start_index":68,
         "type":"LOC_GPE",
         "word":"Hà Nội"
      },
      { 
         "end_index":123,
         "start_index":89,
         "type":"MISC",
         "word":"Cộng hòa xã hội chủ nghĩa Việt Nam"
      }
   ]
}

Failure

{ 
   "code":1,
   "message":"Invalid json syntax! Cannot parse request!"
}

API NLP – Part-of-Speech Tagging (Gán nhãn từ loại)


  • URLhttps://viettelgroup.ai/nlp/api/v1/postag
  • MethodPOST
  • Header Parameters1. header "Content-Type: application/json"2. header "token: token_id"

    Để có "token id" bạn có thể đăng ký tài khoản tại viettelgroup.ai, sau đó login, rồi vào menu token để tạo

Định dạng data gửi lên: Json (default)

{
    "sentence": "input text"
}

Trong đó: sentence là câu văn cần kiểm tra

Success Response

Code: 200
Content: Json array

Mô tả các tham số

API nhận đầu vào là một câu văn, đưa ra danh sách các từ cùng nhãn từ loại và vị trí của từ đó trong câu

Thuộc tính Value Description
word string từ trong câu
type Int nhãn từ loại
start_index Int vị trí bắt đầu tiếng trong câu văn
end_index Int vị trí kết thúc tiếng trong câu

Example Output

Success

{ 
   "code:":0,
   "message":"OK",
   "result":[ 
      { 
         "end_index":7,
         "start_index":0,
         "type":"Np",
         "word":"Viettel"
      },
      { 
         "end_index":10,
         "start_index":8,
         "type":"V",
         "word":"là"
      },
      { 
         "end_index":17,
         "start_index":11,
         "type":"N",
         "word":"đợn vị"
      },
      { 
         "end_index":28,
         "start_index":18,
         "type":"N",
         "word":"trực thuộc"
      },
      { 
         "end_index":42,
         "start_index":29,
         "type":"N",
         "word":"Bộ Quốc Phòng"
      },
      { 
         "end_index":51,
         "start_index":43,
         "type":"Np",
         "word":"Việt Nam"
      }
   ]
}

Failure

{ 
   "code":1,
   "message":"Invalid json syntax! Cannot parse request!"
}

Word type list

Stt Mã từ loại Description Ví dụ
1 N danh từ (noun) bàn, ghế, lợn, gà, ngày, tháng,…
2 Np danh từ riêng (proper noun)
3 Nc danh từ chỉ loại (loại từ) (classifier noun) cái, con, chiếc, cục, cây (cột, nến, rơm), lá (gan), quả (tim, cật), tờ, tập, tệp, mẩu, bánh, mảnh, miếng, cuốn, quyển, pho, ngôi, toà, túp, căn, thửa, súc, suất, ngọn (gió), bông, đoá, cái (tình), cái (tát), cái (vỗ vai), (ngã một) cái, (đùng một) cái…
4 Nu danh từ chỉ đơn vị đo lường, tiền tệ (Measure and Monetary Unit) watt, jun, ha, cm, mm, kg, m², m³, cân, yến, tạ, tấn, lít, độ, hào, đồng, xu, quan, đôla, nhân dân tệ, yên, bảng, ….. [Không gán nhãn Nu cho các từ chỉ dụng cụ đo lường như ca, bò/bơ, đấu, thùng, can…]
5 Nux tổ hợp danh từ chỉ đơn vị mở rộng (Extended Unit Noun) lần/phút, chu_kỳ/p, độ C, ml/24h
6 M số từ (Numeral) một, hai, trăm, nghìn, 3, ½, 2018, 20/10, 30/4/1975, …
7 Mx số từ mở rộng (Extended Numeral) 10h, 12A1, B2345, 29A.1007, 10h30p, 7-9h, 300.000đ, 3cm, 10m2, 2m, 50ml,…
8 L lượng từ (Quantifier) các, những, vài, đôi, dăm, mọi (người), mỗi (lần), từng (ngày), chút (thời gian), một_vài, một_số, dăm_ba, mỗi. tất_cả, cả, mọi, cái (ba cái con gà này), một (có một người đang)…
9 V động từ (Verb) muốn, đi, chơi, ăn, uống,….
10 A tính từ (Adjective) tốt, xấu, to, nhỏ,…
11 P đại từ (Pronoun) tôi, tao, mày, nó, ấy, bao_nhiêu, ai, kia, gì, nào, vậy, thế, sao,…
12 R phụ từ (Adverb) đã, sẽ, đang, rất, lắm, hết_sức, vô_cùng, có_lẽ…
13 E giới từ (Preposition) của, để, từ, đến…
14 C liên từ (Conjunction) và, hoặc, nhưng, nếu, thì, vì, nên …
15 T trợ từ (Auxiliary) à, ư, nhỉ, nhé…; ngay, cả, chính, đích_thị, chỉ, những,…
16 I cảm từ (Interjection) ái chà, ôi, chao ôi, trời ơi…; haizzz, hihihi
17 G từ tổ (tổ hợp từ) (Group) là các quán ngữ: lên_lớp, lên_mặt, còn_mệt, nói_tóm_lại, thì_ra, thì_có,…
18 MW ngữ cố định (Multi-word expression) là các thành ngữ, tục ngữ: lời_ong_tiếng_ve, lời_qua_tiếng_lại, anh_hùng_bàn_phím, bạch_mã_hoàng_tử, …
19 D tổ hợp từ biểu thị ý nghĩa tục tĩu (Dirty word) đù_má, đù_mẹ, đéo, đếch, vãi_luyện, đcmn, [đ con mẹ nó], f..ck,…
20 X tổ hợp không thể xác định từ loại (Undetermined group) x² = a, x+y = 36, √A² = │A│, A1 x √A², 9X {người thế hệ những năm 1990}, 2ker {người thế hệ những năm 2000}
21 FW Từ nguyên dạng tiếng nước ngoài (Foreign words) Nhãn này thường được gán cho những từ ngữ, những cụm từ hay câu tiếng nước ngoài (như tiếng Anh chẳng hạn) được trộn mã hay chuyển mã vào tiếng Việt: made, in, Thailand (made in Thailand), anyway, and, or, but, I, love, you, too (I love you too), how, are, you (how are you)….
22 CH kí hiệu (Symbol) – @ # $ % & * ! < > ( ) { } [ ] …
23 Nb Danh từ vay mượn (Borrowed Noun) Internet, video, shop, (thẻ) Gold, (thẻ) debit,…
24 Vb Động từ vay mượn (Borrowed Verb) Chat, check, comment, inbox, add,…
25 Ab Tính từ vay mượn (Borrowed Adjective) Cute, xì tin, sexy,…
26 Ny Danh từ viết tắt (Abbreviation of Noun) Nv (nhân viên), a (anh), e (em),…
27 Vy Động từ viết tắt (Abbreviation of Verb) Kt (kiểm tra), nc (nói chuyện),…
28 Ay Tính từ viết tắt (Abbreviation of Adjective) Dt (dễ thương),…
29 Npy Danh từ riêng viết tắt (Abbreviation of Proper Noun) VN (Việt Nam), HCM (Hồ Chí Minh), HN (Hà Nội), BIDV, HIV, WTO, NATO, FTU,…
30 Cy Liên từ viết tắt (Abbreviation of Conjunction) Vs (với), Nh (nhưng),…
31 Dy Tổ hợp từ dung tục viết tắt (Abbreviation of Dirty word) Đcm, Đm, vl, clgt,…
32 My Số từ viết tắt (Abbreviation of Numeral) 200k, 50k, 2k1, 2k2
33 Py Đại từ viết tắt (Abbreviation of Pronoun) M (mình/mày), t (tôi/tớ/tao), bn (bao nhiêu), tn (thế nào), bg (bao giờ),…
34 Ry Phụ từ viết tắt (Abbreviation of Adverb) Ko/k (không), đc (được), ms (mới),…
35 Gy Tổ hợp từ viết tắt (Abbreviation of Group) Ntn (như thế nào),…
36 Nby Danh từ vay mượn viết tắt (Abbreviation of Borrowed Noun) 3G, mic, ATM,…
37 Vby Động từ vay mượn viết tắt (Abbreviation of Borrowed Verb) Cmt (comment), ib (inbox)
38 Aby Tính từ vay mượn viết tắt (Abbreviation of Borrowed Adjective) Onl (online), ok ( hàng của shop dùng khá ok)
39 DP Lỗi tiền xử lý (Pre-processing Error) Anhem, ĐHBK, TP.HCM,…

API NLP – Tokenization (Tách từ)


  • URLhttps://viettelgroup.ai/nlp/api/v1/segment
  • MethodPOST
  • Header Parameters1. header "Content-Type: application/json"2. header "token: token_id"

    Để có "token id" bạn có thể đăng ký tài khoản tại viettelgroup.ai, sau đó login, rồi vào menu token để tạo

Định dạng data gửi lên: Json (default)

{
    "sentence": "input text"
}

Trong đó: sentence là câu văn cần kiểm tra

Success Response

Code: 200
Content: Json array

Mô tả các tham số

API nhận đầu vào là 1 câu văn, đưa ra danh sách các từ và vị trí xuất hiện của chúng

Thuộc tính Value Description
word string từ trong câu
start_index Int vị trí bắt đầu tiếng trong câu văn
end_index Int vị trí kết thúc tiếng trong câu

Example Output

Success

{ 
   "code:":0,
   "message":"OK",
   "result":[ 
      { 
         "end_index":7,
         "start_index":0,
         "word":"Viettel"
      },
      { 
         "end_index":10,
         "start_index":8,
         "word":"là"
      },
      { 
         "end_index":17,
         "start_index":11,
         "word":"đơn vị"
      },
      { 
         "end_index":28,
         "start_index":18,
         "word":"trực thuộc"
      },
      { 
         "end_index":42,
         "start_index":29,
         "word":"Bộ Quốc Phòng"
      },
      { 
         "end_index":51,
         "start_index":43,
         "word":"Việt Nam"
      }
   ]
}

Failure

{ 
  "code": 1,
  "message": "Invalid json syntax! Cannot parse request!"
}
Tài Liệu Kỹ Thuật

Nhận Dạng Ký Tự Quang Học ⚡ API OCR – Optical Character Recognition

321

OCR là gì? Công nghệ nhận dạng chữ OCR hiệu quả

  • URLhttp://viettelgroup.ai/cv/api/v1/ocr
  • MethodPOST
  • Header Paramter“Content-Type: multipart/form-data"

Dữ liệu gửi lên

Request: multipart upload file với thông tin:

"name"='file','filename'=$FILE_PATH

Dữ liệu gửi lên là hình của bài báo được truyền qua trường file

Loại file hỗ trợ 'bmp''png''jpg''jpeg''tif''tiff''PNG'

Success Response

Code: 200
Content: inputstream (Json default format)

Mô tả các tham số

Thuộc tính Value Description
id Int Chỉ mục của đầu vào được khai báo dùng để phân biệt kết quả OCR của các trang của file pdf hoặc hình ảnh của file tff, với input đầu vào chỉ có 1 ảnh sẽ mặc định là 1
position Array Chứa đựng vị trí của từng từ, mỗi từ gồm các trường (x,y,w,h (bouding box của từ) trong đó tọa độ x y của điểm bên trái trên cùng và w h là chiều rộng và chiều cao của bouding box), word (nội dung)
textline Array Chứa đựng vị trí của 1 textline, mỗi từ gồm các trường (x,y,w,h (bouding box của từ) trong đó tọa độ x y của điểm bên trái trên cùng và w h là chiều rộng và chiều cao của bouding box), text (nội dung)

Hỗ trợ việc trả file word

  • URLhttp://10.240.17.141:8176/response_word
  • Method:POST
  • Header Paramter:“Content-Type: multipart/form-data”

Dữ liệu gửi lên

-Dữ liệu gửi lên là hình của bài báo được truyền qua trường file

-Loại file hỗ trợ ‘bmp’, ‘png’, ‘jpg’, ‘jpeg’, ‘tif’, ‘tiff’, ‘PNG’

-Dữ liệu trả về là 1 file word

Ví dụ :

curl -o [name doc].docx -X POST 10.240.17.141:8176/response_word -F "file=@{file image}"
Tài Liệu Kỹ Thuật

Nhận Dạng Tiếng Nói ⚡ API STT – Speech To Text

471

5 Best Speech-to-Text APIs | Nordic APIs |

Restful API

REST api được dùng để nhận dạng 1 file hoàn chỉnh & nhận về kết quả nhận dạng cuối cùng.

Hiện tại API hỗ trợ 3 định dạng file audio: wav, mp3, PCM (phải gửi kèm thông tin audio trong request), sử dụng giao thức http POST với các thông tin như sau:

  • API URL: https://viettelgroup.ai/voice/api/asr/v1/rest/decode_file
  • Các tùy chọn cho request được chỉ định trong HEADER như sau:'token': (string) token dùng để xác thực người dùng. Bỏ trống nếu bạn muốn request nặc danh.
  • Các tùy chọn cho request được chỉ định trong url parameter như sau:'model': (string) mã mô hình nhận dạng.Với định dạng PCM, client phải cung cấp đủ các thông tin về audio trong header như sau:
    'sample_rate': (float) sample rate (tần số lấy mẫu) của file audio.
    'format': (string) format của audio ví dụ S16LE là *signed 16 bit little endian* (tham khảo PCM format: https://trac.ffmpeg.org/wiki/audio%20types)
    'num_of_channels': (integer) số channel của audio.
  • Request: multipart upload file với thông tin:'name'='file''filename'=$FILE_PATH

CURL

curl  --request POST --cacert $CERT_FILE  -H "token: $YOUR_TOKEN"  -F "file=@$PATH_TO_FILE"  https://viettelgroup.ai/voice/api/asr/v1/rest/decode_file

Trong đó:

- CERT_FILE: đường dẫn đến file chứng chỉ của https://viettelgroup.ai (Nếu CURL của bạn đã cập nhật chứng chỉ này thì có thể bỏ qua).

- PATH_TO_FILE: đường dẫn đến file cần nhận dạng.

Nếu muốn nhận dạng file PCM, bạn phải cung cấp thêm các thông tin cần thiết vào Header như sau:

`-H "sample_rate:$SAMPLE_RATE" -H "format:$FORMAT" -H "num_of_channels:$CHANNELS"`

Trong đó:

- SAMPLE_RATE: sample rate (tần số lấy mẫu) của file audio.
- FORMAT: format của audio ví dụ S16LE là *signed 16 bit little endian* (tham khảo https://trac.ffmpeg.org/wiki/audio%20types)
- CHANNELS: số channel của audio

PYTHON

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Import the json library
import requests

url = "https://viettelgroup.ai/voice/api/asr/v1/rest/decode_file"
headers = {
    'token': 'anonymous',
    #'sample_rate': 16000,
    #'format':'S16LE',
    #'num_of_channels':1,
    #'asr_model': 'model code'
}
s = requests.Session()
files = {'file': open($AUDIO_PATH,'rb')}
response = requests.post(url,files=files, headers=headers, verify=$CERT_PATH)

print(response.text)

Trong đó:

  • AUDIO_PATH: đường dẫn file audio muốn nhận dạng
  • CERT_PATH: đường dẫn tới file chứng chỉ của viettelgroup.ai : cert file

WebSocket API

API WebSocket hỗ trợ nhận dạng online. Do không có thông tin về audio nên bạn cần cung cấp thông tin này tới API thông qua uri query string:

content-type=audio/x-raw,+layout=(string)interleaved,+rate=(int)16000,+format=(string)S16LE,+channels=(int)1

Trong đó:

Field Mô tả
content-type trường lưu trữ thông tin của audio, các tham số dưới đây được lưu trong trường này
rate sample rate của audio
format định dạng PCM của audio. Tham khảo: PCM format
channel số kênh của audio

Để sử dụng API với account của riêng mình, bạn cần thêm thông tin token của mình thông qua trường ‘token’ trong uri query string: token=$YOUR_TOKEN

Để nhận dạng sử dụng API WebSocket, bạn cần:


  1. Tạo kết nối WebSocket tới API với các thông tin cần thiết đã nêu ở trên.
  2. Gửi data là mảng byte của luồng audio cần nhận dạng với tần suất 4 lần/giây, mỗi lần gửi với số byte = (byte rate của audio)/4. Ví dụ Audio có rate =16000, format S16LE (16bit <=> 2 byte/sample) có byte rate = 16000*2 = 32000 => Mỗi cần lần gửi lên 8000 byte.
  3. Khi kết thúc audio, client nên gửi lên byte của string ‘EOS’ encode UTF-8 để server biết & kết thúc nhận dạng. Hoặc server nhận dạng sẽ tự kết thúc nhận dạng sau một khoảng thời gian ngắn sau khi giọng nói cuối cùng được gửi lên.
  4. Đóng kết nối tới API. Kết thúc.

!!! notice “Lưu ý” Do một số client chưa được cập nhật chứng chỉ của https://viettelgroup.ai, để có thể sử dụng được kết nối bảo mật.

PYTHON

Có thể sử dụng file chứng chỉ trực tiếp trong code, xem toàn bộ code tại đây: Speech to text WebSocket

JAVA

Bạn cần import chứng chỉ vào truststore thông qua công cụ keytool đi kèm với Java

$JAVA_HOME/bin/keytool -import -file $VTCC_CERT -alias wwwvtccai -keystore $JAVA_HOME/jre/lib/security/cacerts

Trong đó:

    - JAVA_HOME: thư mục JDK trên máy client.
    - VTCC_CERT: Đường dẫn đến file chứng chỉ của https://viettelgroup.ai
    - $JAVA_HOME/jre/lib/security/cacerts: Vị trí file lưu trữ truststore mặc định của Java

Nếu yêu cầu mật khẩu, vui lòng nhập vào: ‘changeit

Do chứng chỉ sẽ được import vào TrustStore mặc định của JAVA nên bạn chỉ cần import 1 lần duy nhất.

Xem ví dụ đầy đủ tại đây: VTCC Asr WebSocketSample

Sample code:


    #!/usr/bin/env python3
# -*- coding: utf-8 -*-
import logging
import os.path
import sys
import time
from pathlib import Path
from threading import Thread

import websocket

if sys.version_info[0] < 3:
    raise Exception("Must be using Python 3.xx")
root = logging.getLogger()
root.setLevel(logging.DEBUG)

handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
root.addHandler(handler)

dirname = os.path.dirname(__file__)
audio_path = os.path.join(Path(dirname).parent, 'test_audio.wav')
cert_path = os.path.join(Path(dirname).parent.parent, 'vtcc-cert/wwwvtccai.crt')

def rate_limited(max_per_second):
    min_interval = 1.0 / float(max_per_second)

    def decorate(func):
        last_time_called = [0.0]

        def rate_limited_function(*args, **kargs):
            elapsed = time.clock() - last_time_called[0]
            left_to_wait = min_interval - elapsed
            if left_to_wait > 0:
                time.sleep(left_to_wait)
            ret = func(*args, **kargs)
            last_time_called[0] = time.clock()
            return ret

        return rate_limited_function

    return decorate

@rate_limited(4)
def send_data(ws, data):
    ws.send(data)

def on_message(ws, message):
    print(message)

def on_error(ws, error):
    logging.warn(error)

def on_close(ws):
    logging.info("### closed ###")
    ws.close()

class AsrWebSocket:
    def __init__(self, sample_rate=16000, audio_format='S16LE', channels=1, token='anonymous',
                 url='wss://viettelgroup.ai/voice/api/asr/v1/ws/decode_online'):
        self.sample_rate = sample_rate
        self.format = audio_format
        self.channels = channels
        self.token = token
        self.url = url
        self.audio_stream = None
        self.ws = None
        self.sslopt = {
            'ca_certs': cert_path
        }

    def generate_url_query(self):
        query_url = self.url + '?content-type=audio/x-raw,+layout=(string)interleaved,+rate=(int)' + str(
            self.sample_rate)
        query_url += ',+format=(string)' + self.format + ',+channels=(int)' + str(self.channels) + '&token=' + self.token
        return query_url

    def on_open(self):
        def run():
            for block in iter(lambda: self.audio_stream.read(self.sample_rate // 4), b''):
                send_data(self.ws, block)
            self.ws.send('EOS')

        logging.info('Upload thread terminated')
        my_thread = Thread(target=run)
        my_thread.start()

    def recognize(self, audio_steam):
        self.audio_stream = audio_steam
        self.ws = websocket.WebSocketApp(self.generate_url_query(),
                                         on_message=on_message,
                                         on_error=on_error,
                                         on_close=on_close,
                                         on_open=self.on_open)
        self.ws.run_forever(sslopt=self.sslopt)

ws_asr = AsrWebSocket()
ws_asr.recognize(open(audio_path, 'rb'))
package speech.asr.ws;

import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
import io.netty.handler.codec.http.websocketx.WebSocketFrame;
import speech.asr.utils.PCMFormat;

import java.io.BufferedInputStream;
import java.nio.file.Files;
import java.nio.file.Paths;

public class AsrWebSocketSample {

    public static void main(String[] args) throws Exception {
        IResponseHandler<WebSocketFrame> handler = new IResponseHandler<WebSocketFrame>() {
            @Override
            public void onMessage(WebSocketFrame frame) {
                if (frame instanceof TextWebSocketFrame) {
                    TextWebSocketFrame textFrame = (TextWebSocketFrame) frame;
                    System.out.println(textFrame.text());
                } else
                    System.out.println(frame);
            }

            @Override
            public void onFailure(Throwable cause) {
                cause.printStackTrace();
            }

            @Override
            public void onComplete() {
                System.err.println("completed");
            }
        };
        try (
                BufferedInputStream bi = new BufferedInputStream(Files.newInputStream(Paths.get("src/main/resources/test_audio.wav")))
        ) {
            AsrWebSocketClient client = AsrWebSocketClient.newBuilder()
                    .setSampleRate(16000)
                    .setAudioFormat(PCMFormat.S16LE)
                    .setChannels(1)
                    .setHandler(handler)
                    .build();
            client.recognize(bi);
        }
    }
}
Tài Liệu Kỹ Thuật

Tổng Hợp Tiếng Nói Api ⚡ API TTS – Text To Speech

462

Mobile App That Speaks with DeepMind WaveNet Google Cloud Text To Speech ML API and Flutter | by Alfian Losari | Flutter Community | Medium

  • URLhttps://viettelgroup.ai/voice/api/tts/v1/rest/syn
  • Methodhttp POST
  • Header Parameters1. header "Content-Type: application/json"2. header "token: token_id"Để có "token id" bạn có thể đăng ký tài khoản tại viettelgroup.ai, sau đó login, rồi vào menu token để tạo

Định dạng data gửi lên: Json (default)

{
    "text": "hệ thống tổng hợp tiếng nói trung tâm không gian mạng",
    "voice": "doanngocle",
    "id": "2",
    "without_filter": false,
    "speed": 1.0,
    "tts_return_option": 2
}

Mô tả các tham số:

property name Value Description
text String text đầu vào cần tổng hợp.
voice String giọng đọc muốn tổng hợp.
id String ID request do người dụng đặt (có thể dùng để traceback).
without_filter Boolean có sử dụng filter để tăng chất lượng giọng hay không (chậm hơn).
speed Float tốc độ giọng (có giá trị 0.7 – 1.3, tương ứng tốc độ đọc từ x0.7 đến x1.3 lần).
tts_return_option Interger một số dạng integer để chọn api như sau:
1: streaming
2: wav
3: mp3

Success Response:

  • Code: 200
  • Content: inputstream (audio wav format)

Giọng đọc hiện có

Mã giọng đọc Mô tả
hn-quynhanh Giọng nữ miền Bắc chất lượng cao
hcm-diemmy Giọng nữ miền Nam chất lượng cao
hue-maingoc Giọng nữ miền Trung chất lượng cao
hn-phuongtrang Giọng nữ miền Bắc chất lượng cao
hn-thanhtung Giọng nam miền Bắc
hue-baoquoc Giọng nam miền Trung
hcm-minhquan Giọng nam miền Nam
trinhthiviettrinh Giọng nữ miền Bắc
lethiyen Giọng nữ miền Nam
nguyenthithuyduyen Giọng nữ miền Nam
phamtienquan Giọng nam miền Bắc

Bạn có thể lấy danh sách giọng đọc mới nhất thông qua API: https://viettelgroup.ai/voice/api/tts/v1/rest/voices


example curl:

tạo file data.json như sau:

{
    "text": "Hệ thống tổng hợp tiếng nói trung tâm không gian mạng",
    "voice": "doanngocle",
    "id": "2",
    "without_filter": false,
    "speed": 1.0,
    "tts_return_option": 2
}

command:

curl --header "Content-Type: application/json" --header "token: demo_token"   --request POST   --data "@data.json" https://viettelgroup.ai/voice/api/tts/v1/rest/syn > example.wav
#if encounter SSL error because of https certificate, add option '-k' to  make insecure connections   (this will expose your application to security risks, such as man-in-the-middle attacks.)

output trả về là file: example.wav

example python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Import the json library
import json
import requests
import urllib

url = "https://viettelgroup.ai/voice/api/tts/v1/rest/syn"
data = {"text": "hôm nay là thứ mấy", "voice": "doanngocle", "id": "2", "without_filter": False, "speed": 1.0, "tts_return_option": 2}
headers = {'Content-type': 'application/json', 'token': 'demo_token'}
response = requests.post(url, data=json.dumps(data), headers=headers)
#if encounter SSL error because of https certificate, please comment out above line and use the line below to  make insecure connections   (this will expose your application to security risks, such as man-in-the-middle attacks.)
#response = requests.post(url, data=json.dumps(data), headers=headers, verify=False)
# Headers is a dictionary
print(response.headers)
# Get status_code.
print(response.status_code)
# Get the response data as a python object.
data = response.content
f = open("/home/tanpk/log/tanpk.wav", "wb")
f.write(data)
f.close()

example java:


public class TestAPI {
    public static InputStream getTTS(String apiUrl, String datajson) throws IOException {
        HttpClient httpClient = HttpClientBuilder.create().build();
        HttpPost request = new HttpPost(apiUrl);
        StringEntity body = new StringEntity(datajson, "UTF-8");
        /*add content-type, token into header request */
        request.addHeader("content-type", "application/json;charset=UTF-8");
        request.addHeader("token", "demo_token");
        request.getRequestLine();
        request.setEntity(body);
        HttpResponse response = httpClient.execute(request);
        System.err.println(response);
        return response.getEntity().getContent();
    }
    public static void main(String[] args) throws IOException {
        /*
        * create datajon format
        * text need to endcode by URLencode
        * */
        String datajson = "{\"text\":\"xin chào các bạn"," +
                "\"voice\":\"doanngocle\"," +
                "\"id\":\"3\"," +
                "\"without_filter\":false," +
                "\"speed\":1.0," +
                "\"tts_return_option\":2}";
        InputStream result = getTTS("https://viettelgroup.ai/voice/api/tts/v1/rest/syn", datajson);
        /* you can write result to file to use */
    }
}
Công Nghệ

Tổng hợp tiếng nói ⚡ Text To Speach Ai Viettel

1376

What Is AI Text to Speech and How Does It Work?

Trải Nghiệm Ngay

Công nghệ cho phép tự động chuyển đổi văn bản thành tiếng nói Tiếng Việt giúp doanh nghiệp tự động hóa quá trình cung cấp sản phẩm dịch vụ, nâng cao hiệu quả hoạt động sản xuất kinh doanh. Giọng đọc nhân tạo Viettel AI có ngữ điệu tự nhiên, đa dạng vùng miền, dễ dàng tích hợp với mọi hệ thống

Tính Năng Cơ Bản

Giọng nói tự nhiên

Với việc sử dụng các công nghệ tiên tiến thế giới về xử lý ngôn ngữ tự nhiên, xử lý tiếng nói, học sâu, hệ thống tổng hợp cho giọng đọc tự nhiên, ngắt nghỉ tự động và kết hợp biểu cảm chính xác

Giọng đọc đa dạng

Hiện tại chúng tôi cung cấp giọng đọc báo, đọc truyện với cả 3 vùng miền: Bắc (3 giọng nữ, 2 giọng nam), Trung (1 giọng nữ, 1 giọng nam), Nam (3 giọng nữ, 1 giọng nam)

Đáp ứng nhanh chóng

Sử dụng số lượng lớn các máy chủ mạnh với công nghệ tính toán song song cho phép đáp ứng nhanh chóng mọi yêu cầu của khách hàng, ngay cả trong trường hợp tải tăng đột biến

Trải Nghiệm Ngay

Ứng Dụng Thực Tế

Hệ thống thông báo, IoT, Robotics

Hỗ trợ các hệ thống thông báo, phát thanh, hướng dẫn tại sân bay, đài truyền hình, bệnh viện hoặc Smart Home…

Thuyết minh / Tổng đài tự động

Tiết kiệm chi phí, thời gian, tăng năng suất và chất lượng cho các dịch vụ thuyết minh, bán hàng hoặc CSKH qua điện thoại

Sách / Báo nói

Cho phép người dùng lắng nghe nội dung trực tiếp trên các trang sách báo online khi đi đường, lái xe, đi tàu. Đặc biệt hỗ trợ người khiếm thị

Tổng hợp tiếng nói và ứng dụng

Tổng hợp tiếng nói (TTS: Text to Speech) về bản chất là quá trình tạo tín hiệu tiếng nói từ văn bản. Một hệ thống tổng hợp tiếng nói có thể được ứng dụng trong rất nhiều bài toán khác nhau có thể lấy ví dụ như báo nói Dân trí, một sản phẩm mà tôi đã tham gia phát triển, ngoài ra các ứng dụng của trí tuệ nhân tạo như trợ lý ảo, tổng đài tự động,… đều cần mô đun đầu ra là hệ thống tổng hợp tiếng nói. Hiện nay có rất nhiều sản phẩm thuộc các chủng loại khác nhau được ứng dụng vào các mục đích khác nhau, nhưng lớn mạnh nhất phải kể đến các sản phẩm được phân phối trên Google Cloud, Amazon Web Services, Microsoft Azure. Những cloud này cho phép các bạn tích hợp hệ thống TTS của họ vào các sản phẩm cá nhân của mình. Ở Việt Nam và dành cho tiếng Việt cũng có các sản phẩm nổi bật như sản phẩm của Viettel, FPT hay Vbee.

Lịch sử phát triển

Tổng hợp tiếng nói về bản chất là quá trình tạo tín hiệu tiếng nói từ văn bản. Trong nhiều năm trở lại đây, người ta cố gắng tạo ra một hệ thống tổng hợp sao cho có độ tự nhiên cao nhất (Naturaless) và đọc dễ hiểu nhất (Intelligibility).
Một trong những nghiên cứu đầu tiên mà ta phải nói đến chính là mô hình mô phỏng hệ thống cấu âm của con người do nhà khoa học người đan mạch Christian Kratzentein phát triển, hệ thống đơn giản này có thể phát ra được âm thanh của một số nguyên âm dài như (/a/, /e/, /i/, /o/, và /u/), ngoài ra nhiều phiên bản cải tiến cũng được phát triển trong thời gian sau đó. Tuy nhiên trải qua một quá trình dài phát triển, ngay cả tới tận thế kỷ 19 các nghiên cứu tổng hợp tiếng nói vẫn còn ở mức đơn giản.
Tới đầu thế kỷ 20, khi mà có sự lớn mạnh của các hệ thống điện tử, thì các hệ thống tổng hợp có chất lượng mới được phát triển. Năm 1937, The Bell Telephone Laboratory đã giới thiệu VODER (Voice Operating Demonstator), đây có thể nói là hệ thống điện tử đầu tiên của con người có thể tổng hợp tiếng nói bằng cách phân tích các đặc trưng âm học.
Ngoài các hệ thống tổng hợp tiếng anh thì tới năm 1975 MUSA được giới thiệu với khả năng tổng hợp tiếng ấn độ. Nhưng vẫn chưa có gì gọi là tổng hợp nhiều ngôn ngữ cả, phải tới khi Bell labs công bố nghiên cứu của họ về việc tổng hợp đa ngôn ngữ dựa trên các hướng tiếp cận “Xử lý ngôn ngữ tự nhiên” năm 1997 thì lĩnh vực này mới bắt đầu được khai thác. Nhìn chung, đến thời điểm này chất lượng của các hệ thống tổng hợp vẫn còn rất tệ, phải đến đầu những năm 2000 chất lượng và độ tự nhiên mới có sự nhảy bậc khi áp dụng tổng hợp thống kê dựa trên các mô hình Markov ẩn. Gần đây những nghiên cứu về mạng nơ ron học sâu được dẫn đầu bởi Google đã cho thấy những bước tiến nổi bật khi áp dụng vào tổng hợp tiếng nói, chất lượng đã đạt đến độ rất cao và khó có thể phân biệt là người hay máy nói.

Các phương pháp tổng hợp tiếng nói

Hiện nay có hai hướng tiếp cận chính về tổng hợp tiếng nói: Hướng tiếp cận cổ điển, một hệ thống tổng hợp tiếng nói sẽ được phân ra làm hai phần chính gồm có phần xử lý ngôn ngữ tự nhiên và phần xử lý tổng hợp tiếng nói Hình 1. Hướng đi thứ hai là tổng hợp End to End, tức là toàn bộ quá trình từ huấn luyện hay tổng hợp chỉ cần chuẩn bị dữ liệu gồm có các tệp âm thanh và văn bản tương ứng, ngoài ra không cần nhiều kiến thức về ngôn ngữ học để xây dựng hệ thống.
Hình 1: Kiến trúc chung của các hệ thống tổng hợp tiếng nói theo hướng cổ điển.

Tổng hợp mô phỏng hệ thống phát âm

Tổng hợp mô phỏng hệ thống phát âm là các kỹ tổng hợp giọng nói dựa trên mô hình máy tính để mô phỏng các hệ thống phát âm của con người và mô phỏng quá trình tạo ra tiếng nói trên hệ thống đó. Tổng hợp dựa trên mô phỏng hệ thống phát âm hầu hết chỉ dành cho nghiên cứu. Lý do là vì mục tiêu của phương pháp này là mô phỏng quá trình tạo tiếng nói sao cho càng giống cơ chế của con người càng tốt, nên về lý thuyết có thể xem đây là phương pháp cơ bản nhất, nhưng cũng vì vậy mà phương pháp này khó thực hiện và chất lượng đầu ra thường không cao. Thời điểm hiện nay phương pháp này khó có thể được ứng dụng tại Việt Nam.

Tổng hợp tần số Formant

Tổng hợp tần số Formant là tổng hợp không sử dụng mẫu giọng thật nào khi chạy, thay vào đó tín hiệu được tạo ra bởi một mô hình tuyến âm. Mô hình này mô phỏng hiện tượng cộng hưởng của các cơ quan phát âm bằng một tập hợp các bộ lọc. Các bộ lọc này được gọi là các bộ lọc cộng hưởng Formant, chúng có thể được kết hợp song song hoặc nối tiếp hoặc cả hai. Hình hai biểu diễn mô hình tổng hợp Formant nối tiếp, trong đó đầu ra của bộ cộng hưởng này là đầu vào của bộ cộng hưởng kia:
Hình 2: Hệ thống tổng hợp Formant nối tiếp.
Nhược điểm của phương pháp này là tạo ra giọng nói không tự nhiên, nghe rất “máy”. Ưu điểm nhỏ gọn và chạy nhanh.

Tổng hợp ghép nối

Tổng hợp ghép nối là phương pháp dựa trên việc ghép nối các đoạn tín hiệu tiếng nói đã được ghi âm từ trước, xem mô tả cách hoạt động trên Hình 3. Đơn vị âm phổ biến là âm vị âm tiết, bán âm tiết, âm đôi, âm ba, từ cụm tư. Do đặc tính tự nhiên của tiếng nói được ghi âm và lưu trữ trong các đơn vị âm, nên tổng hợp ghép nối là phương pháp có khả năng tổng hợp tiếng nói với mức độ dễ hiểu và tự nhiên cao. Tuy nhiên, do giọng nói tự nhiên được ghi âm thay đổi từ lần phát âm này sang lần phát âm khác, và công nghệ tự động hóa việc ghép nối các đoạn của tín hiệu thỉnh thoảng tạo những tiếng cọ sát không tự nhiên ở đoạn ghép.
Hình 3: Quá trình tổng hợp ghép nối

Có ba kiểu tổng hợp ghép nối chính:

  • Tổng hợp chọn đơn vị (Unit selection)
  • Tổng hợp âm kép (Diphone)
  • Tổng hợp chuyên biệt (Domain-specific)

Tổng hợp chọn đơn vị dùng một cơ sở dữ liệu lớn các giọng nói ghi âm. Trong đó, mỗi câu được tách thành các đơn vị khác nhau như: các tiếng đơn lẻ, âm tiết, từ, nhóm từ hoặc câu văn. Một bảng tra các đơn vị được lập ra dựa trên các phần đã táchvà các thông số âm học như tần số cơ bản, thời lượng, vị trí của âm tiết và các tiếng gần nó. Khi chạy các câu nói được tạo ra bằng cách xác định chuỗi đơn vị phù hợp nhất từ cơ sở dữ liệu. Quá trình này được gọi là chọn đơn vị và thường cần dùng đến cây quyết định được thực hiện. Thực tế, các hệ thống chọn đơn vị có thể tạo ra được giọng nói rất giống với người thật, tuy nhiên để đạt độ tự nhiên cao thường cần một cơ sở dữ liệu lớn chứa các đơn vị để lựa chọn.
Tổng hợp âm kép là dùng một cơ sở dữ liệu chứa tất cả các âm kép trong ngôn ngữ đang xét. Số lượng âm kép phụ thuộc vào đặc tính ghép âm học của ngôn ngữ. Trong tổng hợp âm kép chỉ có một mẫu của âm kép được chứa trong cơ sở dữ liệu, khi chạy thì lời văn được chồng lên các đơn vị này bằng kỹ thuật xử lý tín hiệu số nhờ mã tuyên đoán tuyến tính hay PSOLA. Chất lượng âm thanh tổng hợp theo cách này thường không cao bằng phương pháp chọn đơn vị nhưng tự nhiên hơn cộng hưởng tần số và ưu điểm của nó là có kích thước dữ liệu nhỏ.
Tổng hợp chuyên biệt (Domain-specific) là phương pháp ghép nối từ các đoạn văn bản đã được ghi âm để tạo ra lời nói. Phương pháp này thường được dùng cho các ứng dụng có văn bản chuyên biệt, cho một chuyên nghành, sử dụng từ vựng hạn chế như các thông báo chuyến bay hay dự báo thời tiết. Công nghệ này rất đơn giản và đã được thương mại hóa từ lâu. Mức độ tự nhiên của hệ thống này có thể rất cao vì số lượng các câu nói không nhiều và khớp với lời văn, âm điệu của giọng nói ghi âm. Tuy nhiên hệ thống kiểu này bị hạn chế bởi cơ sở dữ liệu chuyên biệt không áp dụng được cho miền dữ liệu mở.

Tổng hợp dùng tham số thống kê

Tiếp theo đây chúng ta sẽ xem xét về phương pháp tổng hợp tiếng nói đang được sử dụng rộng rãi, đó là tổng hợp dựa trên tham số thống kê. Trước đây tổng hợp thống kê thường dựa trên các mô hình Markov ẩn (HMMs), ngày nay mô hình này được thay thế bằng các mạng nơ ron học sâu để ước lượng các tham số đặc trưng âm học từ đầu vào là tham số đặc trưng ngôn ngữ học.
Hình 4: Tổng hợp tham số thống kê

Hình 4 mô tả kiến trúc phổ thông của một hệ thống tổng hợp tham số thống kê. Trong đó văn bản đầu vào sẽ được trích chọn thành các đặc trưng ngôn ngữ học bởi bộ Trích chọn đặc trưng ngôn ngữ (Linguistic Features Extraction). Sau đó các đặc trưng ngôn ngữ này đi qua bộ Parameter Generation và bộ này sẽ ước lượng được đặc trưng âm học ở đầu ra. Cuối cùng Vocoder tổng hợp tín hiệu tiếng nói từ những đặc trưng âm học này,Ngoài việc sử dụng riêng rẽ các phương pháp tổng hợp, thì trên thế giới cũng có những nghiên cứu về tổng hợp lai ghép ví dụ như lai ghép giữa tổng hợp thống kê và tổng hợp ghép nối để tận dụng những hưu điểm của hai phương pháp này.

Tổng hợp End to End

Tổng hợp End to end là phương pháp mới được phát triển trong những năm gần đây. Mục tiêu của phương pháp này là tạo ra hệ thống tổng hợp có chất lượng cao nhất mà không cần dùng đến các kiến thức chuyên gia dựa trên các mạng nơ ron học sâu. Một kiến trúc nổi bật của phương pháp này có thể kể đến Tacotron2 của Google hay FastSpeech của Microsoft. Kiến trúc chung hay được sử dụng của một hệ thống End to End gồm có hai phần chính là: Phần tạo Mel spectrogram từ chuỗi ký tự đầu vào và phần chuyển hóa Mel spectrogram thành tín hiệu tiếng nói. Hình 5 mô tả kiến trúc một hệ thống tổng hợp End to End, trong đó phần tạo Mel spectrogram gồm hai mô đun là Embedder để chuyển hóa chuỗi ký tự thành chuỗi các véc tơ biểu diễn, sau đó mô đun Sequence to Sequence sẽ ước lượng Mel spectrogram từ chuỗi véc tơ này. Cuối cùng từ Mel spectrogram được chuyển hóa thành tín hiệu tiếng nói nhờ Neural Vocoder.