AudInput Auditory Input Module of the

English and Russian bilingual ghost.pl AI in Perl

Mens Latina in Latin -- MindForth for Robots

1. Cognitive architecture Diagram of the AudInput (Auditory Input) Mind-Module

The AudInput module receives input for the sense of hearing.

   /^^^^^^^^^\ Word-Audition Brings Images To Mind /^^^^^^^^^\
  /   EYE     \                       _______     /   EAR     \
 /             \ CONCEPTS            / New-  \   /             \
|   _______     |  | | |   _______  ( Concept )-|-------------\ |
|  /old    \!!!!|!!|!| |  / Old-  \  \_______/  |  Audition   | |
| / engram  \---|----+ | ( Concept )-----|------|----------\  | |
| \ fetch   /   |  | | |  \_______/------|------|-------\  |  | |
|  \_______/    |  | | |     |    \      |      |  c    |  |  | |
|               | a| | |     |     \     |      |   a   |  |  | |
|  visual       | b|C| |     |      \    |      |    t  |  |  | |
|               | s|O|f|     |       \  _V__    |     s-/  |  | |
|  memory       | t|N|i|     |        \/    \   |          |  | |
|               | r|C|b|     |        /      \  |  e       |  | |
|  reactivation | a|E|e|   __V____   ( Parser ) |   a      |  | |
|               | c|P|r|  /       \   \      /  |    t-----/  | |
|  channel      | t|T|s| /SpreadAct\   \____/   |             | |
|   _________   |  |_|_| \_________/     |      |  f          | |
|  /composite\  | / Psy \/       ________V__    |   i         | |
| / remembered\ |( Mind- )      /           \   |    s        | |
| \ images    /-|-\Core /------( InStantiate )  |     h-------/ |
|  \_________/  |  \___/        \___________/   |               |


2. Purpose of the AI4U Textbook AudInput auditory input module

The AudInput module is designed to simulate the acoustic input of human speech by treating keyboard characters as phonemes of speech.


3. Algorithm of the AI4U Textbook AudInput mind-module

3.A. Calling AudListen

AudInput receives input from the human user via the keyboard by calling the AudListen module to listen for auditory input which is passed into the AudInput module.

3.B. Calling AudMem to store auditory input

AudInput calls the AudMem auditory memory module which both stores a word in the auditory memory array and calls the AudRecog module to recognize words or parts of words.

3.C. Differentiating between known concepts and new concepts.

If an incoming word is recognized, AudInput calls the OldConcept module to treat the word as an already known, old concept pre-existing in the @psy conceptual array. Otherwise, if an input word is not recognized, AudInput calls the NewConcept module to create a new concept expressed by the word.

3.D. Reentering words used as output by the AI Mind back into the AI Mind.

If all thoughts are sent to the Speech module, then that same output is reentered back into the mind through the AudInput module. If the Volition module permits the AI to think some thoughts silently without revealing its thought to circumambient humans, then those silent thoughts must bypass the Speech output module and reenter the AudInput module.

3.E. Responding to special keystrokes from the keyboard.

AudInput must respond to special keystrokes carrying special instructions:

3.F. Adjusting the speed of thought in compensation for varying circumstances

The AudInput module may slow down the internal speed of thought when human input begins so as to accommodate the relative slowness of human beings. If no human input is detected for a prolonged period of time, the AI Mind may be coded to think faster and faster until an ultimate speed of thought is attained. Sudden input by a human being may then abruptly slow down the internal thought processes of the artificial intelligence.

3.G. Acceptance of Roman characters for English and Cyrillic for Russian.

In the ghost.pl AI using Unicode for multiple languages, the AudInput module must not only accept each different alphabet but also detect any change in alphabet and reset a human-language identifier accordingly. A simple identifier like hlc may lock the thinking mechanisms into a specific language (e.g., English or Russian) until a different alphabet is encountered, or a more sophisticated identifier like rugov may permit a foreign word to be used within one language without shifting the thought-processes into another language.


4. Code of AudInput() from ghost327.pl AI source code in Perl


sub AudInput() {  # http://ai.neocities.org/AudInput.html
  $audpsi = 0;  # 2017-03-15: From MindForth -- prevent carry-over. 
  $iob = 0;  # 2017-09-13: reset indirect-object identifier for safety. 
  $spt = $t;      # 2016jan28: as in FileInput() module.
  $tio = 0; # 2017-09-13: reset at level above EnParser() and InStantiate()
  $tsn = $t;      # 2016mar13: current input is time-of-seqneed $tsn
  $_ = " ";       # 2016FEB03: PERL by Example (2015), p. 301 
# if ($pov == 2 && $hlc == 3) {  # 2018-09-27: prevent user-prompt during thinking
  if ($pov == 2) {  # 2019-06-03: regardless of language
    if ($fyi == 1) { print "\nNow in user input Normal Mode." } # 2017-04-12
    if ($fyi == 2) { print "\nNow in user input Transcript Mode." } # 2017-04-12
    if ($fyi == 3) { print "\nNow in user input Tutorial Mode." } # 2017-04-12
    if ($fyi == 4) { print "\nNow in user input Diagnostic Mode." } # 2017-04-12
    if ($fyi > 2) {  # 2019-10-21: if Tutorial or Doagnostic Mode...
      print "\nTab cycles mode; Esc(ape) quits AI born $dob"; #2019-06-03
      print "\nt= $t Enter English or Russian as Subject-Verb-Object: \n \n"; #2019-06-03
    }  # 2019-10-21: end of test for Tutorial Mode or Diagnostic Mode.
  }  # 2017-03-31: end of pov-check for displaying user-prompt.
  for ($hear = 0; $hear < 141; $hear++ )  {  # 2017-03-23: start input wait-loop
    if ($pov == 2) { # 2017-03-30: during external input 
      AudListen();  # 2017-03-24: check for keyboard input....
      if ($pho eq chr(27)) { print "The $vrsn.pl AI now ceases to live and think. \n"; } #09-11
      if ((ord $pho) == 27) { die "TERMINATE AI alive since $dob. \n"; } # 2019-01-25
      if ($pho eq "\xA0"||$pho eq "\x80") {$pho="\x80"; $hlc=3} # А
      if ($pho eq "\xA1"||$pho eq "\x81") {$pho="\x81"; $hlc=3} # Б
      if ($pho eq "\xA2"||$pho eq "\x82") {$pho="\x82"; $hlc=3} # В
      if ($pho eq "\xA3"||$pho eq "\x83") {$pho="\x83"; $hlc=3} # Г
      if ($pho eq "\xA4"||$pho eq "\x84") {$pho="\x84"; $hlc=3} # Д
      if ($pho eq "\xA5"||$pho eq "\x85") {$pho="\x85"; $hlc=3} # Е
      if ($pho eq "\xF1"||$pho eq "\xF0") {$pho="\xF0"; $hlc=3} # Ё
      if ($pho eq "\xA6"||$pho eq "\x86") {$pho="\x86"; $hlc=3} # Ж
      if ($pho eq "\xA7"||$pho eq "\x87") {$pho="\x87"; $hlc=3} # З
      if ($pho eq "\xA8"||$pho eq "\x88") {$pho="\x88"; $hlc=3} # И
      if ($pho eq "\xA9"||$pho eq "\x89") {$pho="\x89"; $hlc=3} # Й
      if ($pho eq "\xAA"||$pho eq "\x8A") {$pho="\x8A"; $hlc=3} # К
      if ($pho eq "\xAB"||$pho eq "\x8B") {$pho="\x8B"; $hlc=3} # Л
      if ($pho eq "\xAC"||$pho eq "\x8C") {$pho="\x8C"; $hlc=3} # М
      if ($pho eq "\xAD"||$pho eq "\x8D") {$pho="\x8D"; $hlc=3} # Н
      if ($pho eq "\xAE"||$pho eq "\x8E") {$pho="\x8E"; $hlc=3} # О
      if ($pho eq "\xAF"||$pho eq "\x8F") {$pho="\x8F"; $hlc=3} # П
      if ($pho eq "\xE0"||$pho eq "\x90") {$pho="\x90"; $hlc=3} # Р
      if ($pho eq "\xE1"||$pho eq "\x91") {$pho="\x91"; $hlc=3} # С
      if ($pho eq "\xE2"||$pho eq "\x92") {$pho="\x92"; $hlc=3} # Т
      if ($pho eq "\xE3"||$pho eq "\x93") {$pho="\x93"; $hlc=3} # У
      if ($pho eq "\xE4"||$pho eq "\x94") {$pho="\x94"; $hlc=3} # Ф
      if ($pho eq "\xE5"||$pho eq "\x95") {$pho="\x95"; $hlc=3} # Х
      if ($pho eq "\xE6"||$pho eq "\x96") {$pho="\x96"; $hlc=3} # Ц
      if ($pho eq "\xE7"||$pho eq "\x97") {$pho="\x97"; $hlc=3} # Ч
      if ($pho eq "\xE8"||$pho eq "\x98") {$pho="\x98"; $hlc=3} # Ш
      if ($pho eq "\xE9"||$pho eq "\x99") {$pho="\x99"; $hlc=3} # Щ
      if ($pho eq "\xEA"||$pho eq "\x9A") {$pho="\x9A"; $hlc=3} # Ъ
      if ($pho eq "\xEB"||$pho eq "\x9B") {$pho="\x9B"; $hlc=3} # Ы
      if ($pho eq "\xEC"||$pho eq "\x9C") {$pho="\x9C"; $hlc=3} # Ь
      if ($pho eq "\xED"||$pho eq "\x9D") {$pho="\x9D"; $hlc=3} # Э
      if ($pho eq "\xEE"||$pho eq "\x9E") {$pho="\x9E"; $hlc=3} # Ю
      if ($pho eq "\xEF"||$pho eq "\x9F") {$pho="\x9F"; $hlc=3} # Я  
      if ($pho =~ /[a-z]/ || $pho =~ /[A-Z]/) { $hlc=1 }    # 2018-09-27: switch 
      if ($pho ne " ") { $abc = $pho; }  # 2019-10-22: for transfer to AudBuffer()
      if ($pho eq " ") { $phodex = 0; }  # 2019-06-10: to separate input words
      $text = $text.$pho;  # 2017-11-27: concatenation, Perl Black Book p. 149
      print ($text); # 2017-11-27: show accumulation of concatenated input.
        if ($pho eq chr(9)) {  # 2017-04-12: if user presses Tab-key...
        $fyi = ($fyi + 1);  # 2017-04-12: change to next user-input-mode
        if ($fyi > 4) {$fyi = 1}  # 2017-04-12: cycle back to Normal Mode.
      }  # 2017-04-12: end of test for press of Tab-key to change modes.
      if ($pho eq chr(9)) {  # 2019-01-25: if user presses ASCII-9 TAB key...
        print "\n TAB changes display mode to $fyi"; # 2019-01-25: situation-report
        if ($fyi==0) { print " = bare-bones \n"; }   # 2019-01-25: without prompt.
        if ($fyi==1) { print " = Normal. \n"; }      # 2019-01-25: input/output.
        if ($fyi==2) { print " = Transcript. \n"; }  # 2019-01-25: future
        if ($fyi==3) { print " = Tutorial. \n"; }    # 2019-01-25: with arrays.
        if ($fyi==4) { print " = Diagnostic. \n"; }  # 2019-01-25: with arrays.
      }  # 2019-01-25: expanded snippet informs user of change of display-mode.
      if ($pho eq chr(27)) { print "Ghost AI now ceases to live and think. \n"; } 
      if ($pho eq chr(27)) { die "TERMINATE: ESCape key for quit. \n"; } # 2017-03-27
      if ((ord $pho) == 0) {  # 2017-03-30: if no user input comes in...
        $impetus++; # 2017-12-03: if no input, increment $impetus for Volition()
        $isolation++;  # 2018-10-08: if no input, increment trigger for Imperative()
        $gapcon--;  # 2017-04-10: decrement gapcon for each loop with no input.
        if ($gapcon < 1)  {  # 2017-04-10: after an arbitrary pause for input...
          $pho = "\n";  # 2017-03-30: supply CR not entered by human user.
          $gapcon = 12; # 2017-04-12: reset gapcon as chosen by Mind-maintainer
          $len = 0;    # 2017-03-30: Reset so next word must accumulate length.
          $hear = 0;  # 20178-03-30: reset the main AudInput() loop.
          last;  # 2017-03-30: [Forth: LEAVE] exit from AudInput pause-loop.
        }  # 2017-03-30: end of test of size of no-input gap.
      }  # 2017-03-30: end of test for input to advise users to wait patiently.
      if ((ord $pho) > 0) { # 2017-12-21: if a character has come in...
        $t++;  # 2017-12-21: increment internal AI time "t" for AudMem()
      }  # 2017-12-21: end of test for a key-input.
      if ((ord $pho) > 32) { # 2017-12-21: if alphabetic letter has come in...
        $len++;  # 2017-12-21: increment word-length for AudRecog()
      }  # 2017-12-21: end of test for a letter of the alphabet
      if ($pho eq chr(83)) {  # 2017-04-30: if uppercase "S"...
#       $num = 2;  # 2017-04-30: tentative assignment of plural num(ber)
#       $num = 2;  # 2019-06-13: may interfere with third-person SINGULAR verbs.
      }  # 2017-04-30: end of test for 83=S
      if ($pho ne chr(32)) {  # 2017-04-30: if not 32=SPACE
        if ($pho ne chr(83)) {  # 2017-04-30: if not uppercase "S"...
          $num = 1;  # 2017-04-30: tentative assignment of singular num(ber)
        }  # 2017-04-30: 
      }  # 2017-04-30: end of space-test needed because of any $tult before SPACE. 
      if ((ord $pho) < 33) {  # 2017-04-30: if not an alphabetical character
#       if ($endpho eq chr(83)) { $num = 2 }  # 2017-04-30: if final 83=S
#       if ($endpho eq chr(83)) { $num = 2 }  # 2019-06-13: not for 3rd person SINGULAR
      }  # 2017-12-16: for $num
      if ((ord $pho) > 31 || (ord $pho) == 13) {  # 2017-12-21: CR, SPACE, alphabetic letter
        if ($len == 1 && (ord $pho) != 32) {  # 2017-12-21: set only at start of a word
          if ($rv == 0 && (ord $pho) != 32) {  # 2017-12-21: no $rv for 32=SPACE
            $rv = $t;  # 2017-12-21: set recall-vector.
          }  # 2017-12-21: end of test for not-yet-set value; 2017-09-22: use len(gth)
        }  # 2017-12-21: end of more complex setting of value.
        if ($len == 0) { $audrec = 0 }  # 2017-12-21: prevent carry-over.
      if ($len > 0) {  # 2017-12-21: if incoming word already in progress.
        $endpho = $pho;  # 2017-12-21: keep track of previous character, for $num
        if ((ord $pho) == 32 || (ord $pho) == 13) { $len++ }  # SPACE increments length
      }  # 2017-12-21: end of test for at least a one-character word
      AudMem();  # 2018-09-27: for English or Russian input.
    }  # 2017-12-21: end of conditional test for entering or reentering character.
    if ((ord $pho) == 13) {  # 2017-12-21: CR-13 carriage-return
      $pho = chr 32;  # 2017-12-21: use SPACE for the recognition of a word. 
      $audrun = 1;  # 2017-12-21: Reset to one at CR end of input
      $eot = 13;  # 2017-12-21: end of transmission (EOT)
      print chr 10;  # 2017-12-21: ASCII linefeed LF-10
    }  # 2017-12-21: end of test for Enter-key carriage-return.
    if ((ord $pho) == 32 || (ord $pho) == 13) {  # 2017-12-21: after SPACE or CR...
      $audpsi = $finpsi;  # 2017-12-21: TEST -- retain final psi before 13-CR
      $pho = chr 32;  # 2017-12-21: use SPACE for the recognition of a word. 
      $audrun = 1;  # 2017-12-21: Reset to unity at end of a word.
      $spt = $t;   # 2017-12-21: set time-of-SPACE "spt" to current time "t".
      $tult = $t - 1;  # 2017-12-21: for storage at prior-by-one time-point.
      if ($audrec > 0) { $audpsi = $audrec }  # 2017-12-21
      if ($audpsi > 0) {  # 2017-12-21: if a word has been recognized...
        $impetus = 0;  # 2017-12-21: reset flag of counting no-input cycles.
        $isolation = 0;  # 2018-10-08: reset flag of counting no-input cycles.
        $sublen = 0;  # 2017-12-21: length of AudRecog subpsi word-stem
        $oldpsi = $audpsi;  # 2017-12-21: transfer value for OldConcept().
        $audpsi = 0;  # 2017-12-21: re-set to prevent carry-over. 
        $prc = 0;  # 2017-03-30: reset provisional recognition "prc";
        OldConcept();  # 2017-12-21: call module for recognized concepts. 
      } else {  # 2017-12-21: if no old concept is recognized...
        if ($len > 0) {  # 2017-12-21: if dealing with a word of positive length...
          $impetus = 0;  # 2017-12-21: reset flag of counting no-input cycles.
          $isolation = 0;  # 2018-10-08: reset flag of counting no-input cycles.
          my @aud=split(',',$ear[($t)]);  # 2017-12-21: break apart @aud row
          $ear[$t] = " ,$aud[1],$aud[2]"; # 2017-12-21: store 32=SPACE
          NewConcept();  # 2017-12-21: create new concept with number "nxt".
             @aud=split(',',$ear[($t)-1]);  # 2017-12-21: avoid "my" twice
          $ear[$t-1] = "$aud[0],$aud[1],$nxt"; # 2017-12-21: As in MindForth AI
          $nxt++;   # 2017-12-21:
        }  # 2017-12-21: end of test for a positive word-length.
      }  # 2017-12-21: end of test for a recognized audpsi concept. 
      AudDamp();  # 2017-12-21: de-activate auditory memory in advance of next word.
    } # 2017-12-21: end of test for 32=SP or 13=CR to make sure word has ended  
  } # 2017-12-21: new end of test for pov=2
  if ($pho ne " ") { $abc = $pho; }  # 2019-10-22 BUGFIX: for transfer to AudBuffer()
  if ($pho ne "" && $PAL == 1) { AudBuffer(); }  # 2019-10-30: except during EnVerbGen()
  if ($pho eq " ") { $phodex = 1; }  # 2019-10-22: to separate input words
  if (ord $doa == 13) { # 2017-12-21: if a 13=CR has been entered...
    $doa = 0;  # 2017-12-21: reset to prevent carry-over.
    last;  # 2017-12-21: exit from loop
  }  # 2017-12-21: end of test for CR=13
  if ($pov == 1) {  # 2016-12-16: for reentrant engrams without a hear-loop.
    if ((ord $pho) > 0) {  # 2017-03-30: if a character has come in...
      $t++;  # 2017-12-18: increment internal AI time "t" for AudMem()
    }  # 2017-03-30: end of test for a key-input.
    if ((ord $pho) > 32) {  # 2017-04-01: if alphabetic letter has come in...
      $len++;  # 2017-12-18: increment word-length for AudRecog()
    }  # 2017-04-01: end of test for a letter of the alphabet
    if ($pho eq chr(83)) {  # 2017-04-30: if uppercase "S"...
#     $num = 2;  # 2017-04-30: tentative assignment of plural num(ber)
#     $num = 2;  # 2019-06-13: may interfere with third-person SINGULAR verb-forms.
    } # 2017-04-30: end of test for 83=S
    if ($pho ne chr(32)) {   # 2017-04-30: if not 32=SPACE
      if ($pho ne chr(83)) { # 2017-04-30: if not uppercase "S"...
        $num = 1;  # 2017-04-30: tentative assignment of singular num(ber)
      } # 2017-12-18: end of test for "S". 
    } # 2017-04-30: end of space-test needed because of any $tult before SPACE. 
    if ((ord $pho) < 33) {  # 2017-04-30: if not an alphabetical character
#     if ($endpho eq chr(83)) { $num = 2 }  # 2017-04-30: if final 83=S
#     if ($endpho eq chr(83)) { $num = 2 }  # 2019-06-13: not for 3rd person SINGULAR
    } # 2017-12-18: end of test for a non-alphabetic character
    if ((ord $pho) > 31 || (ord $pho) == 13) {  # 2017-12-16: 13=CR carriage return
      if ($len == 1 && (ord $pho) != 32) {  # 2017-09-24 BUGFIX: no $rv for 32=SPACE
        $rv = $t;  # 2017-12-16: for a word of a single letter.
      }  # 2017-04-07: end of more complex setting of value.
      if ($len == 0) { $audrec = 0 }  # 2017-04-05: prevent carry-over.
        if ($len > 0) {  # 2017-04-1: if incoming word already in progress.
          $endpho = $pho;  # 2017-04-30: keep track of previous character, for $num
          if ((ord $pho) == 32 || (ord $pho) == 13) { $len++ }  # 2017-12-18: increment
        }  # 2017-04-01: end of test for at least a one-character word
        AudMem();  # 2018-09-27: for English or Russian input.
      }  # 2017-03-30: end of conditional test for entering or reentering character
      if ((ord $pho) == 13) {  # 2017-03-30: CR-13 carriage-return
        $pho = " ";    # 2016-06-24: use SPACE for recognition of word. 
        $audrun = 1;   # 2017-03-30: Reset to one at CR end of input.
        $eot = 13;     # 2017-03-30: end of transmission (EOT)
        print chr 10;  # 2017-03-30: ASCII linefeed LF-10
      }  # 2017-03-30: end of test for Enter-key carriage-return.
      if ((ord $pho) == 32 || (ord $pho) == 13) {  # 2017-03-30: after SPACE or CR...
        $audrun = 1;  # 2017-03-30: Reset to unity at end of a word.
        $spt = $t;    # 2017-03-30: set time-of-SPACE "spt" to current time "t".
        $tult = $t - 1;  # 2017-03-30: for storage at prior-by-one time-point.
        if ($monopsi > 0) { $audpsi = $monopsi }  # 2017-06-24
        if ($audrec > 0) { $audpsi = $audrec }  # 2017-06-24
        if ($audpsi > 0) {  # 2017-03-30: if a word has been recognized...
          $sublen = 0;      # 2017-03-30: length of AudRecog subpsi word-stem
          $oldpsi = $audpsi;  # 2017-03-30: transfer value for OldConcept().
          $audpsi = 0;      # 2017-03-30: re-set to prevent carry-over. 
          $prc = 0;         # 2017-03-30: reset provisional recognition "prc";
          OldConcept();     # 2017-03-30: call module for recognized concepts. 
          $rv = 0;  # 2017-09-22: so new $rv may be set
        } else {    # 2017-03-30: if no old concept is recognized...
          if ($len > 0) {   # 2017-03-30: if dealing with a word of positive length...
            my @aud=split(',',$ear[($t)]);  # 2017-03-31: break apart @aud row
            $ear[$t] = " ,$aud[1],$aud[2]"; # 2017-03-31: store 32=SPACE
            NewConcept();  # 2017-03-30: create new concept with number "nxt".
            $rv = 0;       # 2017-09-22: so new $rv may be set
            @aud=split(',',$ear[($t)-1]);  # 2017-03-31: avoid "my" twice
            $ear[$t-1] = "$aud[0],$aud[1],$nxt";  # 2017-03-30: As in MindForth AI
            if ($len > 1) { $nxt++; }  # 2017-04-23: like MindForth here, not NewConcept()
          }  # 2017-03-30: end of test for a positive word-length.
        } # 2017-03-30: end of test for a recognized audpsi concept. 
        AudDamp(); # 2017-03-30: de-activate auditory memory in advance of next word.
      }  # 2017-03-30: end of test for 32=SP or 13=CR to make sure word has ended
    } # 2017-06-23: end of test for reentrant pov=1
    ReadMode('normal');  # PBlackBook p. 543
    if ($pov == 2)  {  # 2017-04-02: only during external input...
      $msg = $msg.$pho;  # 2017-03-25: concatenation, Perl Black Book p. 149
    }  # 2017-04-02: end of test for accumulating only user input
    if ($pho eq "\r") { $eot = 13; print "\n"; } # 2017-12-26: end of transmission
    ReadMode('normal');  # PBlackBook p. 543
    if (ord $doa == 13) {  # 2017-03-25: Perl Black Book p. 354 ASCII "ord"
      $pho = " ";  # 2017-04-01: convert CR-13 to SPACE-32
      $doa = 0;  # 2017-03-26: Reset to prevent carry-over.
      $hear = 0;  # 2017-04-02: reset the main AudInput() loop.
    }  # 2017-03-25: end of test for CR-13 to make early exit from loop.
    if ($unk eq chr(27)) { die "TERMINATE: ESCape key for quit. \n"; } # 2017-03-24
    $pho = "";  # 2017-03-24: From MindForth: must be reset to zero each time.
    ReadMode('normal');  # PBlackBook p. 543
    $homo = $msg;  # 2017-03-25: for HCI in Sensorium
    if ($unk eq chr(10)) { print "End of input \n"; last }  # 2017-03-23
    if ($reentcon == 1)  { $msg = $idea }  # 2017-03-26: from ReEntry()
    if ($pho eq chr(27)) { die "TERMINATE: ESCape for quit. \n"; } # 2017-03-18
    if ($pho eq "\n") { $eot = 1 }  # 2016feb01: for escape from outer loop.
    if ($pho eq "\n" && $msg eq "") { $trigger++ } # 2016apr29
#   if ($t > $cns) { die "Safety stop: out of memory \n"; }  # 2016apr09
#   if ($t > $cns) { die "Safety stop: out of memory \n"; }  # 2018-11-08
    if (ord $pho == 13 || ord $pho == 32) { #2017-03-30
      if ($audnew == 0) {$audnew = $t};  # 2016feb09 Set only once. 
      if ($fyi > 2 && $hlc == 3) {     # 2018-09-27: if mode is Diagnostic 
        print "  pho $pho is an alphabetic letter \n";  # 2016jan29
      }  # 2016feb07: end of test for Diagnostic or Tutorial mode.
      if ($fyi > 2 && $hlc == 3) {     # 2018-09-27: if mode is Diagnostic 
        print " AudInput: increasing len(gth) to $len \n";  # 2016jan31
      }  # 2016feb07: end of test for Diagnostic or Tutorial mode.
      if ($len < 1) { $audrec = 0 }  # 2017-03-16: prevent carry-over.
      if ($len < 1) { $audpsi = 0 }  # 2017-03-16: prevent carry-over.
      if ($len == 1 && $rv == 0) { $rv = $t }  # 2017-09-24: set recall-vector.
    }  # 2017-03-31: removing else-block from code above
    if ($len == 1) { $rv = $t }  # 2017-09-10: TEST; CORRECT BUG?
    if ($audnew == 0) { $audnew = $t }   # 2018-09-27: Set only once. 
  } # 2017-12-27: end of test for $pov==1 (during re-entry of output).
  $pos = 0;      # 2016mar12: Reset to prevent InStantiate() carry-over.
  $pre = 0;      # 2016mar12: Reset to prevent InStantiate() carry-over.
  $psi = 0;      # 2016mar12: Reset to prevent InStantiate() carry-over.
  if ($pho eq "\n") { $eot = 1 }  # 2016feb01: for escape from outer loop.
  $monopsi = 0;  # 2016feb06: zero out to prevent carry-over
  if ($audpsi > 0) {       # 2016jan30: would be from AudRecog()
    $oldpsi = $audpsi; # 2016jan30: JSAI: for conformance with MindForth
    $audpsi = 0;  # 2016feb04: zero out to prevent carry-over
    $prc = 0;  # 2016feb06: as is done in the JavaScript AiMind.html
  }  # 2017-03-30: for termination of code commented out
  $audpsi = 0;  # 2016jan30: reset for safety
  $eot = 0;  # 2016feb02: Reset to zero for the sake of whole sentences. 
  $audpsi = 0;  # 2016jan30: reset for safety
  $psi = 0;  # 2016mar12: Reset to prevent carry-over.
}  # 2019-10-30: AudInput() returns to Sensorium() or Speech().

5. Variables for the AudInput Mind-Module

$audnew -- holds the onset-tag while the rest of a word comes in.

$audpsi -- concept number of English or Russian word in @ear auditory memory array.

$audrec -- auditory recognition concept-number

$audrun -- in the AudRecog() module, which increments audrun, it is a counter of how many times the incrementing module has been called. If the audrun count is at unitary one or below two, then the initial character at the start of a word is being processed. audrun is reset to one in the AudInput() and FileInput() modules.

$doa (dead on arrival)-- flag for exiting from the AudInput() loop.

$endpho -- final input character (or phoneme) captured and checked for being an "S" which might indicate that an input noun is plural in number.

$eot -- end-of-transmission for end of input.

$fyi -- (for your information) 0 = bare-bones (without prompt); 1 = Normal; 2 = Transcript; 3 = Tutorial mode; 4 = Diagnostic mode

$gapcon -- status-con flag for AudInput() to count down gaps of no input, so that internal thinking may accelerate during periods of no input from external sources.

$hear -- loop counter for the ghost.pl AudInput() module to call AudListen() enough times to give the user an opportunity to enter input.

$hlc -- human-language code; 1=en; 2=de; 3=ru. Subject to override by the $engov or $degov or $rugov flag.

$homo -- for the human-computer interface (HCI), whatever the Homo Sapiens user has input.

$impetus -- an accumulating variable to hold the activation-level of a trigger to initiate action by the FreeWill Volition() module.

$iob -- indirect-object tag for @psy concept array.

$isolation -- counter of thought-cycles spent in "isolation" with no human input, as an arbitrary trigger for output by the AI Mind, or as a threshold for the AI to take certain actions if input suddenly appears.

$len -- length, for avoiding input non-words. The len variable increments with each additional character during AudInput, and is reset to zero at the end of InStantiate or OldConcept or NewConcept, so that the auditory engram recall vector rv may be set for the first character of a word when the word-length is a unitary one.

$monopsi -- for detecting single-character words in the AudRecog() module.

$msg -- for input as a "message" to the AI.

$num -- number-flag for grammatical number.

$oldpsi -- used in OldConcept to de-globalize "psi".

$pho -- a "phoneme" or character of auditory input.

$phodex -- pho-index counter for AudBuffer(); phodex is reset to unitary one ("1") in the AudInput module and in the Speech module.

$pos -- (part of speech) 1=adj 2=adv 3=conj 4=interj 5=noun 6=prep 7=pron 8=verb

$pov -- point-of-view: 1=self; 2=dual; 3=alien. When pov=1, the word "you" is somebody in the external word. When pov=2, the word "you" refers to the self-concept "I" in the AI. When pov=3, the word "you" is interpreted as part of a conversation by a third-party or as a word in a text, not referring to the self-concept of either the AI or of someone talking to the AI.

$prc -- provisional recognition in AudRecog()

$pre -- pre(vious) associated @psy concept.

$psi -- variable for an element of the @psy conceptual array, with a numeric identifier serving as an "mtx" machine-translation tag for the same concept in another language.

$reentcon -- possibly obsolete reentrant condition flag once used for test purposes.

$rv -- recall-vector for auditory memory. The time-point value of rv is first set in the AudInput module after an intervening space when the first character of an input-word is being passed into the AudMem module. The recall-vector rv is reset to zero in AudInput after a call to OldConcept or to NewConcept.

$spt -- blank space time before start of a word in auditory memory.

$sublen -- length of AudRecog() subpsi word-stem

$t -- lifetime Ghost AI experiential time "$t"

$text -- a general variable to hold text, especially for incrementing by concatenation.

$tio -- time-of-indirect-object for parser module.

$tsn -- time of input as $seqneed time for InStantiate()

$tult -- t penultimate, or time-minus-one.

$unk -- all-purpose $unk (unknown) for troubleshooting


6. Troubleshooting and Debugging for AI Mind Maintainers

6.1.a. Symptom: (Something goes wrong.)
6.1.b. Solution: (AI Mind Maintainer devises solution.)


7. Future Development

The AudInput mind-module must eventually change from receiving input from the computer keyboard to hearing actual acoustic sounds and processing human speech.

  • Roadmap to Artificial Intelligence


    8. Resources for the AI4U Textbook AudInput Module


    9. Spread the News on TikTok and Other Venues

    Are you on TikTok? Are you eager to be a ThoughtLeader and Influencer?
    Create a TikTok video in the following easy steps.

    I. Capture a screenshot of https://ai.neocities.org/AudInput
    for the background of your viral TikTok video.

    II. In a corner of the screenshot show yourself talking about the AudInput module.

    III. Upload the video to TikTok with a caption including all-important hash-tags which will force governments and corporations to evaluate your work because of FOMO -- Fear Of Missing Out:
    #AI #ИИ #brain #мозг #ArtificialIntelligence #ИскусственныйИнтеллект #consciousness #сознание #Dushka #Душка #psychology #психология #subconscious #подсознание
    #AGI #AiMind #Alexa #ChatAGI #chatbot #ChatGPT #cognition #cyborg #Eureka #evolution #FOMO #FreeWill #futurism #GOFAI #HAL #immortality #JAIC #JavaScript #linguistics #metempsychosis #Mentifex #mindmaker #mindgrid #ML #neuroscience #NLP #NLU #OpenAI #OpenCog #philosophy #robotics #Singularity #Siri #Skynet #StrongAI #transhumanism #Turing #TuringTest #volition

    A sample video is at
    https://www.tiktok.com/@sullenjoy/video/7222666509359811883


    10. AiTree of Mind-Modules for Natural Language Understanding


    Nota Bene: This webpage is subject to change without notice. Any Netizen may copy, host or monetize this webpage to earn a stream of income by means of an affiliate program where the links to Amazon or other booksellers have code embedded which generates a payment to the person whose link brings a paying customer to the website of the bookseller.

    This page was created by an independent scholar in artificial intelligence who created the following True AI Minds with sentience and with limited consciousness.

  • http://ai.neocities.org/mindforth.txt -- MindForth Robot AI in English.

  • http://ai.neocities.org/DeKi.txt -- Forth Robot AI in German.

  • http://ai.neocities.org/perlmind.txt -- ghost.pl Robot AI thinks in English and in Russian.

  • http://ai.neocities.org/Ghost.html -- JavaScript Robot AI Mind thinks in English.

  • http://ai.neocities.org/mens.html -- JavaScript Robot AI Mind thinks in Latin.

  • http://ai.neocities.org/Dushka.html -- JavaScript Robot AI Mind thinks in Russian.

    The following books describe the free, open-source True AI Minds.

    AI4U -- https://www.iuniverse.com/BookStore/BookDetails/137162-AI4U

    AI4U (paperback) -- http://www.amazon.com/dp/0595259227

    AI4U (hardbound) -- http://www.amazon.com/dp/0595654371

    The Art of the Meme (Kindle eBook) -- http://www.amazon.com/dp/B007ZI66FS

    Artificial Intelligence in Ancient Latin (paperback) -- https://www.amazon.com/dp/B08NRQ3HVW

    Artificial Intelligence in Ancient Latin (Kindle eBook) -- https://www.amazon.com/dp/B08NGMK3PN

  • https://redditfavorites.com/products/artificial-intelligence-in-ancient-latin

    Artificial Intelligence in German (Kindle eBook) -- http://www.amazon.com/dp/B00GX2B8F0

    InFerence at Amazon USA (Kindle eBook) -- http://www.amazon.com/dp/B00FKJY1WY

    563 Mentifex Autograph Postcards were mailed in 2022 primarily to autograph collector customers at used bookstores to press the issue of whether or not the Mentifex oeuvre and therefore the autograph is valuable. These artwork-postcards with collectible stamps may be bought and sold at various on-line venues.

  • https://www.ebay.com
  • https://galaxycon.com/search?q=Mentifex

    See AI 101 AI 102 AI 103 year-long community college course curriculum for AI in English.
    See Classics Course in Latin AI for Community Colleges or Universities.
    See College Course in Russian AI for Community Colleges or Universities.
    Collect one signed Mentifex Autograph Postcard from 563 in circulation.
    See Attn: Autograph Collectors about collecting Mentifex Autograph Postcards.

    Return to top; or to
    Image of AI4U found at a book store
    The collectible AI4U book belongs in your AI Library as an early main publication of Mentifex AI.


    Website Counter