6

Tôi hiện đang viết chương trình AI nhận đầu vào từ Dragon NaturallySpeaking (sử dụng Natlink), xử lý và trả về kết quả nói. Tôi đã có thể đến với một nhận GrammarBase mà nắm bắt tất cả các đầu vào từ Dragon và gửi nó đến phân tích cú pháp của tôi.Chuyển hướng tất cả đầu vào từ Dragon NaturallySpeaking sang Python? (Sử dụng Natlink)

class Receiver(GrammarBase): 

     gramSpec = """ <start> exported = {emptyList}; """ 

     def initialize(self): 
      self.load(self.gramSpec, allResults = 1) 
      self.activateAll() 

     def gotResultsObject(self, recogType, resObj): 
      if recogType == 'reject': 
       inpt, self.best_guess = [], [] 
      else: 
       inpt = extract_words(resObj) 
       inpt = process_input(inpt) # Forms a list of possible interpretations 
       self.best_guess = resObj.getWords(0) 
      self.send_input(inpt) 

     def send_input(self, inpt): 
      send = send_to_parser(inpt) # Sends first possible interpretation to parser 
      try: 
       while True: 
        send.next() # Sends the next possible interpretation if the first is rejected 
      except StopIteration: # If all interpretations are rejected, try sending the input to Dragon 
       try: 
        recognitionMimic(parse(self.best_guess)) 
       except MimicFailed: # If that fails too, execute all_failed 
        all_failed() 

Mã này hoạt động như mong đợi, nhưng có một số vấn đề:

  1. Rồng xử lý đầu vào trước khi gửi nó vào chương trình của tôi. Ví dụ: nếu tôi nói "Mở Google Chrome", nó sẽ mở Google Chrome và sau đó gửi đầu vào tới Python. Có cách nào để gửi đầu vào cho Python mà không xử lý đầu tiên không?

  2. Khi tôi gọi waitForSpeech(), một hộp thông báo bật lên, cho biết rằng trình thông dịch Python đang đợi đầu vào. Có thể (đối với thẩm mỹ và thuận tiện) để ngăn không cho hộp thông báo hiển thị và thay vào đó chấm dứt quá trình thu thập giọng nói sau khi tạm dừng đáng kể từ người dùng?

Cảm ơn bạn!

Trả lời

3

Đối với câu hỏi đầu tiên của bạn, nó chỉ ra rằng DNS sử dụng "Open ..." Utterance như là một phần của quá trình giải quyết lệnh của nó trong nội bộ. Điều này có nghĩa rằng DNS giải quyết lời nói và thực thi lệnh trước khi natlink có cơ hội. Cách duy nhất xung quanh việc này là thay đổi lời nói từ "Open ..." thành "Trigger ..." trong ngữ pháp natlink của bạn (hoặc một số lời phát biểu khác mà DNS không sử dụng ngoài "Trigger").

Một số nhà phát triển natlink hang out tại speechcomputing.com. Bạn có thể nhận được phản hồi tốt hơn ở đó.

Chúc may mắn!

+0

Được rồi, đã hiểu! Cảm ơn rất nhiều sự giúp đỡ của bạn, chúc mừng! – Jian

+0

speechcomputing.com có ​​vẻ như đã được tạo cho Google. Theo như tôi có thể nói đó là vô hiệu của nội dung hữu ích. – Harry

+1

Thật không may, trang web đó không còn được duy trì nữa. Thay vào đó hãy kiểm tra nhóm Yahoo voicecoder. – reckoner

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