2017-08-08 2 views
0

Lorsque je l'utilise, il ne parlera que lorsque je lui enseigne un autre mot, je ne peux pas le faire pour répondre à une question spécifique dans le répertoire, avez-vous les gars des avis sur la façon d'aller sur la fixation, je suis déconcerté ..Parler AI batch (qui apprend) mais j'ai un problème

@ECHO OFF 
@mode con cols=55 lines=10 
if not exist data.txt echo.>data.txt 
:begin 
set /p text="Talk: " 
for /f "tokens=1,* [email protected]" %%i in (data.txt) do (
if /i "%text%"=="%%i" (

echo Visu: %%j 
goto begin 
) 
) 
:Learn 
    echo --- I don't know that. 
    set /p answer=--- What would be a good answer to '%text%'? 
echo %text%@%answer%>>data.txt 
echo Visu: thank you 
goto Aye 

:Aye 
echo set speech = Wscript.CreateObject("SAPI.spVoice") >> "temp.vbs" 
echo speech.speak "%answer%" >> "temp.vbs" 
start temp.vbs 
pause 
del temp.vbs 
goto begin 
+1

Utilisez 'echo's pour déboguer et voir ce que le code est exécuté et pourquoi se le code qui vous intéresse est pas. Si vous ne pouvez toujours pas le réparer, donnez-nous plus de détails sur ce que vous avez essayé. – vorou

+0

iv littéralement essayé tout sauf @LotPings fixer. aha –

+0

donc je pensais juste id prendre une chance et demander de l'aide, et cela a fonctionné mieux que je l'ai prévu. –

Répondre

0
  • Faire Aye un sous-programme/fonction que vous pouvez appeler avec le texte pour parler.
  • Dans appelés sous le premier argument est% 1

@ECHO OFF 
mode con cols=55 lines=10 
if not exist data.txt Type Nul >data.txt 
:begin 
cls& Echo Talk to Visu 
set "text=" & set /p text="Talk: " 
if not defined text exit /B 
for /f "tokens=1,* [email protected]" %%i in (data.txt 
) do if /i "%text%"=="%%i" Call :Aye "%%~j" & Goto :begin 

:Learn 
echo --- I don't know that. 
echo --- What would be a good answer to '%text%' 
set /p answer=? 
echo %text%@%answer%>>data.txt 
Call :Aye "%answer%" 
goto :begin 

:Aye 
echo Visu: %~1 
echo Visu: thank you 
echo set speech = Wscript.CreateObject("SAPI.spVoice") > "temp.vbs" 
echo speech.speak "%~1" >> "temp.vbs" 
cscript //Nologo temp.vbs 
Timeout /T 3 /Nobreak >Nul 
del temp.vbs 
goto :Eof 
+0

Merci beaucoup! –

0

start temp.vbs avec cscript /nologo temp.vbs remplacer.

Et probablement vous voulez
echo set speech = Wscript.CreateObject("SAPI.spVoice") > "temp.vbs"
(> au lieu de >>) pour remplacer le fichier à chaque fois?

+0

Merci beaucoup, merci –