Frequently Asked Questions

Here are some answers to questions you may have as you configure and use Jasper.

Installation & Configuration

  • Why can’t I can’t login to my Raspberry Pi for the first time?
    • Are you sure you imaged your SD card correctly? Your Raspberry Pi should emit a green LED light when booting. It may help to wipe your SD card clean with a tool like GParted before imaging with dd. See the Software Guide for full instructions.
  • Why isn’t Jasper allowing me to set up a wireless network?
    • Make sure you’ve followed all of the instructions in the ‘Configure Wireless’ section of the Software Guide. If Jasper is still not providing the opportunity to configure the wireless connection, temporarily disconnect the wireless adapter, restart the Pi fully, then restart the Pi once more with the wireless adapter connected. Jasper should now ask you to configure the wireless network.
  • What does Jasper do with the information I provide in my profile?
    • The information in the profile allows Jasper modules to tailor their responses and actions to you. For example, the weather module will be able to tell you about the weather in your area, and the time module will be able to report a time that’s sensitive to your timezone. None of this information ever leaves the Pi (unless, of course, you create a module that sends the profile information elsewhere).
  • Why does Jasper ask for my Gmail password?
    • As with any information requested in the profile populator, this is purely optional and will never leave the Pi. If provided, Jasper will be able to tell you when you have new emails. Additionally, Jasper will use this information to send relevant messages to your email and/or phone (e.g., links to articles that you’ve requested). As an alternative, consider using Mailgun.
  • Why do I get a segmentation fault when running main.py?
    • This question concerns the following error:

      SYSTEM_ERROR: "dict.c", line 274: Failed to open dictionary file [...] No such file or directory
      zsh: segmentation fault  python main.py
      

      It’s caused by the speech dictionary not being created during the boot process. Make sure you’ve added the boot script to crontab, then restart your Pi. If a dictionary.dic file is still not present in your client/ directory, just run ~/jasper/boot/boot.py manually to force the dictionary generation.

Interacting with Jasper

  • Why isn’t Jasper responding to its name?
    • Make sure your Raspberry Pi is turned on and has been allowed to boot for a few minutes. Try moving closer to the microphone. If all else fails, you can SSH into the Raspberry Pi and run main.py yourself to see Jasper’s interpretation of your input.
  • Why can’t I login to my Raspberry Pi after running Jasper?
    • Jasper’s attempts to connect with a wifi network may be interfering with your attempts to make an ethernet connection. To resolve this, disconnect your wifi adapter, restart your Jasper, then plug in the ethernet cable only after Jasper fails to find a wireless network.
  • Does Jasper work with two-factor email authentication?
    • Sure does! You simply need to generate an application specific password especially for Jasper, and use this generated password in the setup process. See https://support.google.com/accounts/answer/185833?hl=en for more information about how to generate one.
  • What if I don’t have speakers that work with the Pi or don’t want Jasper to speak out loud?
    • I’d suggest using headphones! This is particularly useful for development, during which you might have Jasper repeating himself over and over, speaking sporadically, etc.

Developing on Jasper

  • What if my module’s keywords conflict with those of another module?
    • Modules are ordered using a relative priority system, so a module with higher priority will be given preference when two modules would both accept a certain input. In general, the more specific the module’s isValid function, the higher it’s priority can be, as you’ll trigger fewer false positives. For more detail, see here. For an example in the code, see the ‘News’ and ‘Hacker News’ modules, which would both accept the input “what’s on hacker news?”; the higher priority of the ‘Hacker News’ module ensures that this input is passed to the correct module.
  • Is there any way to interact with Jasper on the command-line?
    • Yes! Try running: “python main.py –local” when SSHed into the Pi to access Jasper’s command-line interface (CLI). Note that there’s no need to type “Jasper” between commands when using the CLI, as you would when interacting through speech.
  • What if my module needs more accurate information from the input text? For example, what if I need to capture a number (“one”, “two”, “three”, etc.)? I can’t list every number in the input, so what do I do?
    • If you need more accurate speech recognition, you could modify Jasper to utilize the AT&T speech-to-text API. This will capture a larger vocabulary at the cost of being somewhat slower and rate-limited. The primary modifications would come in mic.py, which would need to change its rendering function to call the AT&T API. Alternatively, consider limiting the set of relevant words that the user might say (e.g., if the user is choosing from a list of three items, just add “one”, “two”, and “three” to the keywords list, rather than worrying about all possible numbers).
  • What if I want to contribute to Jasper?
    • Great! There’s always work to be done. Before you get started, check out our contributing guide.

Created by Charlie Marsh & Shubhro Saha. Theme based on BlackTie.co. Icons from Noun Project.