2012-02-19 25 views
9

Tôi tương đối mới đối với cả C# và nền tảng Microsoft Speech, nhưng tôi đang làm việc trên một ứng dụng máy chủ sẽ cần phải phiên âm chính tả miễn phí. MS Speech Platform SDK có vẻ hoàn hảo và hoạt động trên máy chủ, trừ khi tôi tham chiếu phương thức AppendDictation() trong GrammarBuilder.AppendDictation trên Microsoft Speech Platform 11 (Server)?

Tôi đang sử dụng Microsoft Speech Platform SDK 11, và các ứng dụng hoạt động tốt nếu tôi xác định một ngữ pháp, nhưng thời điểm này tôi thêm vào AppendDictation(), tôi đã gặp lỗi này:

Cannot find grammar referenced by this grammar. 

Thậm chí mẫu này từ tài liệu dường như thất bại:

GrammarBuilder startStop = new GrammarBuilder(); 
GrammarBuilder dictation = new GrammarBuilder(); 
dictation.AppendDictation(); 

startStop.Append(new SemanticResultKey("StartDictation", new SemanticResultValue("Start Dictation",true))); 
startStop.Append(new SemanticResultKey("DictationInput", dictation)); 
startStop.Append(new SemanticResultKey("StopDictation", new SemanticResultValue("Stop Dictation", false))); 
Grammar grammar=new Grammar(startStop); 
grammar.Enabled=true; 
grammar.Name=" Free-Text Dictation "; 
_recognizer.LoadGrammar(grammar); 

nhưng kỳ lạ, nếu tôi thay đổi LoadGrammar để LoadGrammarAsync, tải văn phạm (hoặc ít nhất là xử lý sự kiện được gọi là), nhưng sau đó recoginzer thất bại với lỗi này:

Error: At least one grammar must be loaded before doing a recognition. 

Tôi đã đọc phiên bản máy chủ của nền tảng không hỗ trợ đọc chính tả, nhưng có vẻ kỳ quặc rằng nó sẽ chuyển với phương thức không hoạt động. Có ai quản lý để có được một ngữ pháp chính tả để làm việc trên máy chủ? Tôi đang làm gì sai?

Rất cám ơn

Trả lời

11

Đối với bất cứ ai có thể đi qua này trong tương lai - bây giờ tôi đã gửi qua email qua lại với Microsoft, và cuối cùng đã nhận được phản ứng này:

The managed interfaces (Microsoft.Speech and System.Speech) are built on top of the native SAPI interfaces. These interfaces are the same for both the Server engine and the Desktop engine.

BUT the engine itself is responsible for implementing dictation, and the Server engine does not do so. Therefore, the call will fail when you load the grammar.

Không phải là câu trả lời tôi đã hy vọng, nhưng nó giải thích nó.

+1

Có cách nào khác để thực hiện chính tả không? – KTF

3

Nếu bạn sử dụng System.Speech bạn có thể tải ngữ pháp với _recognizer.LoadGrammar(new DictationGrammar()); và nó sẽ hoạt động tốt. Việc nhận dạng không phải là xấu, nhưng sau đó bạn phải sử dụng một tệp sóng PCM 16KHz hoặc các cấu hình tệp sóng tương thích khác. Đáng buồn là không có sẵn với Microsoft.Speech.

Các vấn đề liên quan