找回密码
 立即注册
查看: 862|回复: 0

如何使用Python构建TARS:Scratch的虚拟助手

[复制链接]

尚未签到

发表于 2020-8-26 17:58:28 | 显示全部楼层 |阅读模式
  今天我们将使用Python构建演示TARS。TARS可以帮助您自动执行任务,例如在YouTube中搜索视频并播放,发送电子邮件,打开网站,在Wikipedia中搜索材料并阅读它们,通知您所在国家的天气预报,问候等等。通过构建TARS,将增加您的Python知识,并学习许多有用的工具。想知道如何使用Python构建TARS,首先让我们首先创建虚拟环境并构建TARS的基本音频系统。% _6 c% f" d6 G# F* j" `" n8 f
  1. <p>  mkdirTARS</p>2 ?1 u" }0 Y- L$ _
  2. <p>  cdTARS</p>
    , D0 d. E) B5 [4 Z! O2 z* t* z
  3. <p>  virtualenvvenv</p>
复制代码
3 p" s. F/ ^5 i4 K" }3 E/ D. V
  要激活下面的venvrun命令
. x4 j/ J! c5 ^/ B5 E! t0 w
  1.   .venv/bin/activate
复制代码
0 o1 o1 X! ]3 P' u( W2 }. o! |
  什么是虚拟环境?
* G! Q  y5 M# X( T  e' b2 j/ I  激活venv后,我们需要通过以下命令安装主库:
: ?2 c0 ]) w( U. U. r" t  pip3installgTTSSpeechRecognitionPyAudiopygame) s( ?7 g. o7 R# T. _, \* `
  gTTS是一个Python库和CLI工具,可与GoogleTranslate的文本到语音API交互。此模块有助于将字符串文本转换为语音文本,并可以另存为.mp3
) v7 W% L$ c$ @& U! g6 Q0 @+ [  语音识别是家庭自动化,人工智能等多种应用中的重要功能。语音识别需要音频输入,而语音识别使检索此输入变得非常简单。无需从头开始构建脚本来访问麦克风并处理音频文件,SpeechRecognition只需几分钟即可让您启动并运行。
7 p" |( C1 T2 H/ ^; @  要使用SpeechRecognizer访问麦克风,您必须安装PyAudio软件包
: B- c9 R5 J# d* s/ e; i  Pygame是一组跨平台的Python模块,旨在编写视频游戏。它包括旨在与Python编程语言一起使用的计算机图形和声音库。$ ^1 n4 t4 S+ x8 b8 H: ?
  现在,让我们构建TARS的语音系统:
+ H+ x/ B! K5 G0 F1 E
  1. <p>  fromgttsimportgTTS</p>
    * L0 v' r$ ]8 k7 Z  u; u
  2. <p>  importspeech_recognitionassr</p>2 E# ^. k0 C- S2 d/ J% y
  3. <p>  frompygameimportmixer</p>
    3 O) D8 d! g+ B5 L4 {5 m3 j2 L9 O
  4. <p>  deftalk(audio):</p>
    ) U  C% k& x7 G. z/ x9 s
  5. <p>  print(audio)</p>4 s( L7 P/ |3 Q
  6. <p>  forlineinaudio.splitlines():</p>0 V3 Y; V0 b1 f; O; Y: u& p
  7. <p>  text_to_speech=gTTS(text=audio,lang='en-uk')</p>
    3 K* R3 j7 \, ]5 H$ d, X
  8. <p>  text_to_speech.save('audio.mp3')</p>  f3 I/ m. [  H0 O3 C
  9. <p>  mixer.init()</p>
    ' N0 J+ Z) {) B, H6 n& F$ t6 ~$ R
  10. <p>  mixer.music.load("audio.mp3")</p>
    + i9 ^# h. e9 ], N" }8 b- u0 Q
  11. <p>  mixer.music.play()</p>
复制代码
) i. \. p$ I( e; C  p0 h5 c% s
  我们通过音频作为使TARS说话的一种论据。例如talk程序将在splitlines()方法的帮助下循环这些行。此方法用于在线边界处分割线。检查splitlines()了解更多。然后,gTTS将处理所有这些文本转换为语音。text参数定义要读取的文本,lang定义用于读取文本的语言(IETF语言标签)。循环完成后,save()方法将结果写入文件。
- g9 |/ g% j, ]" Z2 F6 [  pygame.mixer是用于加载和播放声音的模块,必须在使用之前进行初始化。
1 `* r) u2 f; g3 v; r) S$ i( Z  现在,让我们创建一个监听命令的函数:& i6 J1 W  w  V9 o6 L: E9 i8 E$ X
  1. <p>  defmyCommand():</p>8 L3 `5 a8 ^4 Q
  2. <p>  #Initializetherecognizer</p>: t) C5 w3 J- L( J7 n
  3. <p>  r=sr.Recognizer()</p>
    % d6 S9 R' `7 Z+ i
  4. <p>  withsr.Microphone()assource:</p>
    ; H: _5 u  X  {' i
  5. <p>  print('TARSisReady...')</p>
    9 Y. q# G6 h7 {! z: Q
  6. <p>  r.pause_threshold=1</p>
    1 [% T  f9 ~9 X
  7. <p>  #waitforasecondtolettherecognizeradjustthe</p>" x+ c0 S0 j+ e& H
  8. <p>  #energythresholdbasedonthesurroundingnoiselevel</p>" L/ {& Z. l" s8 ?+ M  @7 @/ q9 l* Y4 Z
  9. <p>  r.adjust_for_ambient_noise(source,duration=1)</p>
    4 L6 c& T! }5 `. F  ~( H
  10. <p>  #listensfortheuser'sinput</p>
    & @, C' X  q/ g3 |, S' m* o$ A2 j& U
  11. <p>  audio=r.listen(source)</p>
    + k) f) P: V$ F
  12. <p>  try:</p>' `( ^$ b  U6 L- |/ j: p4 ]
  13. <p>  command=r.recognize_google(audio).lower()</p>( @6 i% U1 T  G$ [  L5 o) L
  14. <p>  print('Yousaid:'+command+'\n')</p>
    - v* l9 b0 H! u# D) v3 q
  15. <p>  #loopbacktocontinuetolistenforcommandsifunrecognizablespeechisreceived</p>% \" M( i; O9 x2 c0 B$ R+ y5 D9 z
  16. <p>  exceptsr.UnknownValueError:</p>2 T* R1 U* K* S$ q" n- E2 b0 ^# @
  17. <p>  print('Yourlastcommandcouldn\'tbeheard')</p>
    0 E% f6 P) Z1 \+ c2 X" c
  18. <p>  command=myCommand();</p>1 p6 V2 l' _7 [  V- g9 q
  19. <p>  returncommand</p>
复制代码

3 S; e( Y9 p& ^0 e9 r4 E  在此功能中,我们使用了SpeechRecognition库。它充当几种流行语音API的包装,因此非常灵活。其中之一-GoogleWebSpeechAPI-支持默认API密钥,该密钥硬编码到SpeechRecognition库中。这意味着您可以不用注册服务就能站起来。9 g) G, O9 o3 e9 U( [
  为了能够通过语音识别使用自己的声音,您需要PyAudio软件包。像用于音频文件的Recognizer一样,我们将需要使用Microphone来获取实时语音数据。
  W5 P- n% n. D6 B9 f2 }  您可以使用with块内Recognizer类的listen()方法捕获来自麦克风的输入。此方法将音频源作为其第一个参数,并记录来自该源的输入,直到检测到静音为止。  M- i* L  o  L" c" Y% h
  尝试在安静的地方说出您的命令,否则TARS可能会造成混淆。& t  A) C9 I1 W* z# Y; I! B6 [& t
  综上所述,对于如何使用Python构建TARS:Scratch的虚拟助手的信息,相信大家已经清楚了吧。3 V8 E( g9 f* |; A7 X

4 X( \6 a0 {- C0 Y
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

点击这里给我发消息

QQ|小黑屋|Archiver|手机版|一路学IT论坛 专业视频教程网站

GMT+8, 2026-4-18 01:22

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表