Sự khác biệt giữa System.Speech.Recognition và Microsoft.Speech.Recognition là gì?


79

Có hai không gian tên và tập hợp tương tự để nhận dạng giọng nói trong .NET. Tôi đang cố gắng hiểu sự khác biệt và khi nào thì thích hợp để sử dụng cái này hay cái kia.

Có System.Speech.Recognition từ hệ thống lắp ráp System.Speech (trong System.Speech.dll). System.Speech.dll là một DLL cốt lõi trong thư viện lớp .NET Framework 3.0 trở lên

Ngoài ra còn có Microsoft.Speech.Recognition từ Microsoft.Speech lắp ráp (trong microsoft.speech.dll). Microsoft.Speech.dll là một phần của UCMA 2.0 SDK

Tôi thấy tài liệu khó hiểu và tôi có các câu hỏi sau:

System.Speech.Recognition cho biết nó dành cho "Công nghệ giọng nói trên máy tính để bàn của Windows", điều này có nghĩa là nó không thể được sử dụng trên hệ điều hành máy chủ hoặc không thể được sử dụng cho các ứng dụng quy mô lớn?

UCMA 2.0 Speech SDK ( http://msdn.microsoft.com/en-us/library/dd266409%28v=office.13%29.aspx ) cho biết rằng nó yêu cầu Microsoft Office Communications Server 2007 R2 làm điều kiện tiên quyết. Tuy nhiên, tôi đã được thông báo tại các hội nghị và cuộc họp rằng nếu tôi không yêu cầu các tính năng OCS như sự hiện diện và quy trình làm việc, tôi có thể sử dụng API giọng nói UCMA 2.0 mà không cần OCS. Điều này có đúng không?

Nếu tôi đang xây dựng một ứng dụng nhận dạng đơn giản cho một ứng dụng máy chủ (giả sử tôi muốn tự động phiên âm thư thoại) và tôi không cần các tính năng của OCS, thì sự khác biệt giữa hai API là gì?

Câu trả lời:


102

Câu trả lời ngắn gọn là Microsoft.Speech.Recognition sử dụng phiên bản Server của SAPI, trong khi System.Speech.Recognition sử dụng phiên bản Desktop của SAPI.

Các API hầu hết giống nhau, nhưng các công cụ cơ bản khác nhau. Thông thường, công cụ Máy chủ được thiết kế để chấp nhận âm thanh chất lượng điện thoại cho các ứng dụng lệnh & điều khiển; công cụ Máy tính để bàn được thiết kế để chấp nhận âm thanh chất lượng cao hơn cho cả ứng dụng lệnh & điều khiển và đọc chính tả.

Bạn có thể sử dụng System.Speech.Recognition trên hệ điều hành máy chủ, nhưng nó không được thiết kế để mở rộng gần như Microsoft.Speech.Recognition.

Sự khác biệt là công cụ Máy chủ sẽ không cần đào tạo và sẽ hoạt động với âm thanh chất lượng thấp hơn, nhưng sẽ có chất lượng nhận dạng thấp hơn công cụ Máy tính để bàn.


52

Tôi thấy câu trả lời của Eric thực sự hữu ích, tôi chỉ muốn thêm một số chi tiết mà tôi tìm thấy.

System.Speech.Recognition có thể được sử dụng để lập trình các bộ nhận dạng máy tính để bàn. Các bộ nhận dạng SAPI và Desktop đã được vận chuyển trong các sản phẩm:

  • Windows XP: SAPI v5.1 và không có trình nhận dạng
  • Windows XP Tablet Edition: SAPI v5.1 và Recognizer v6.1
  • Windows Vista: SAPI v5.3 và Recognizer v8.0
  • Windows 7: SAPI v5.4 và Recognizer v8.0?

Máy chủ đi kèm với SAPI, nhưng không có trình nhận dạng:

  • Windows Server 2003: SAPI v5.1 và không có trình nhận dạng
  • Windows Server 2008 và 2008 R2: SAPI v5.3? và không có trình nhận dạng

Các bộ nhận dạng máy tính để bàn cũng đã xuất xưởng trong các sản phẩm như văn phòng.

  • Microsoft Office 2003: Recognizer v6.1

Microsoft.Speech.Recognition có thể được sử dụng để lập trình các bộ nhận dạng máy chủ. Các trình nhận dạng máy chủ đã được vận chuyển trong các sản phẩm:

  • Máy chủ giọng nói (các phiên bản khác nhau)
  • Office Communications Server (OCS) (các phiên bản khác nhau)
  • UCMA - là một API được quản lý cho OCS (tôi tin rằng) đã bao gồm một trình nhận dạng có thể phân phối lại
  • Nền tảng giọng nói máy chủ của Microsoft - trình nhận dạng v10.2

SDK hoàn chỉnh cho phiên bản Microsoft Server Speech Platform 10.2 hiện có tại http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1b1604d3-4f66-4241-9a21-90a294a5c9a4 . Công cụ giọng nói là một tải xuống miễn phí. Phiên bản 11 hiện đã có tại http://www.microsoft.com/download/en/details.aspx?id=27226 .

Để biết thông tin và tải xuống Microsoft Speech Platform SDK 11, hãy xem:

Trình nhận dạng máy tính để bàn được thiết kế để chạy inproc hoặc chia sẻ. Trình nhận dạng dùng chung rất hữu ích trên máy tính để bàn, nơi các lệnh thoại được sử dụng để điều khiển bất kỳ ứng dụng đang mở nào. Trình nhận dạng máy chủ chỉ có thể chạy inproc. Trình nhận dạng Inproc được sử dụng khi một ứng dụng sử dụng trình nhận dạng hoặc khi tệp wav hoặc luồng âm thanh cần được nhận dạng (trình nhận dạng dùng chung không thể xử lý tệp âm thanh, chỉ âm thanh từ thiết bị đầu vào).

Chỉ các trình nhận dạng giọng nói trên máy tính để bàn mới bao gồm ngữ pháp chính tả (ngữ pháp do hệ thống cung cấp được sử dụng để đọc chính tả văn bản miễn phí). Lớp System.Speech.Recognition.DictationGrammar không có bổ sung nào trong không gian tên Microsoft.Speech.

Bạn có thể sử dụng sử dụng API để truy vấn xác định bộ thu hồi dữ liệu đã cài đặt của bạn

  • Máy tính để bàn: System.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers ()
  • Máy chủ: Microsoft.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers ()

Tôi thấy rằng tôi cũng có thể xem những trình nhận dạng nào được cài đặt bằng cách xem các khóa đăng ký:

  • Trình nhận dạng máy tính để bàn: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Speech \ Recognizers \ Tokens
  • Trình nhận dạng máy chủ: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Speech Server \ v10.0 \ Recognizers \ Tokens

--- Cập nhật ---

Như đã thảo luận trong Microsoft Speech Recognition - tôi phải thêm tham chiếu nào? , Microsoft.Speech cũng là API được sử dụng cho trình nhận dạng Kinect. Điều này được ghi lại trong bài viết MSDN http://msdn.microsoft.com/en-us/library/hh855387.aspx


3
Nếu tôi đọc tài liệu một cách chính xác, chỉ các trình nhận dạng giọng nói trên Máy tính để bàn mới bao gồm ngữ pháp chính tả (hệ thống cung cấp ngữ pháp được sử dụng để đọc chính tả văn bản miễn phí). Lớp System.Speech.Recognition.DictationGrammar không có bổ sung nào trong không gian tên Microsoft.Speech.
Michael Levy

Theo MSDN API, có một DictationGrammar và một WildcardGrammar trong C # (và tôi sử dụng nó). Nhưng tôi không biết làm thế nào để kích hoạt nó Xuyên XML xem thêm: (hack phân tích cú pháp?) Stackoverflow.com/questions/12101120/...
Jean-Philippe Encausse

Tôi đã cài đặt ngôn ngữ tiếng Ý được tải xuống từ microsoft.com/en-us/download/details.aspx?id=27224 nhưng System.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers chỉ hiển thị en-US là ngôn ngữ hoạt động để nhận dạng giọng nói. Tôi nhớ một cái gì đó?
POW

7

Đây là liên kết cho Thư viện giọng nói (MS Server Speech Platform):

Microsoft Server Speech Platform 10.1 đã phát hành (SR và TTS bằng 26 ngôn ngữ)


2
10.2 cũng được phát hành gần đây. microsoft.com/downloads/en/…
Michael Levy

Cảm ơn bạn về thông tin. Tôi thấy rằng bây giờ bao gồm một trình xác thực ngữ pháp. Tôi đang suy sụp trong đầu khi cố gắng tìm ra lỗi trong những cái tôi đang tạo. Tôi nên tiếp tục theo dõi tin tức về các bản phát hành trong tương lai ở đâu?
Switch Commerce

"Tôi nên tiếp tục theo dõi tin tức về các bản phát hành trong tương lai ở đâu?" là một câu hỏi tuyệt vời !!! microsoft.com/speech/developers.aspx đã lỗi thời. Các blog phát biểu như blog.msdn.com/b/speakblogs.msdn.com/b/speech không phải lúc nào cũng có các bản cập nhật mới nhất. Bạn có thể thử gotspeech.net hoặc các trang liên quan như gotuc.net . Nhưng như bạn có thể thấy, tôi cũng không tìm thấy một nguồn tuyệt vời để cập nhật.
Michael Levy

1
gần đây nhất tại thời điểm viết bài là phiên bản 11 - microsoft.com/en-us/download/details.aspx?id=27225
George Birbilis

btw, vì trình xác thực ngữ pháp đã được đề cập ở trên, hãy xem msdn.microsoft.com/en-us/library/hh378407%28v=office.14%29.aspx để biết danh sách các công cụ ngữ pháp
George Birbilis

4

Có vẻ như Microsoft đã viết một bài báo làm rõ mọi thứ về sự khác biệt giữa Microsoft Speech Platform và Windows SAPI - https://msdn.microsoft.com/en-us/library/jj127858.aspx . Một điểm khác biệt mà tôi tự nhận thấy khi chuyển đổi mã nhận dạng giọng nói cho Kinect từ Microsoft.Speech sang System.Speech (xem http://github.com/birbilis/Hotspotizer ) là trước đây hỗ trợ ngữ pháp SGRS với tag-format = semantics / 1.0- nghĩa đen, trong khi cái sau thì không và bạn phải chuyển đổi sang ngữ nghĩa / 1.0 bằng cách đổi x thành out = "x"; tại thẻ


3
btw, bạn có thể thấy mã SpeechLib của tôi hữu ích ( SpeechLib.codeplex.com ). Bạn có thể xóa tham chiếu System.Speech khỏi đó và sử dụng Microsoft.Speech thay thế và đặt ký hiệu biên dịch có điều kiện thích hợp (xem nguồn) để sử dụng Microsoft.Speech trong mã (chủ yếu ảnh hưởng đến các điều khoản sử dụng, phần còn lại của mã là giống hệt nhau)
George Birbilis

1
SpeechLib được đề cập tại nhận xét ở trên đã chuyển sang github.com/zoomicon/SpeechLib (vì Codeplex hiện đã được đóng băng ở chế độ lưu trữ)
George Birbilis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.