Skip to content

Speech recognition แบบง่าย ๆ ใน Python 3

สวัสดีผู้อ่านทุกท่านครับ บทความนี้จะพาผู้อ่านไปใช้ Speech recognition แบบง่าย ๆ ใน Python 3 กันครับ

Speech recognition เป็นเทคโนโลยีที่ทำให้คอมพิวเตอร์รู้จำเสียงมนุษย์ เพื่อแปลงเสียงมนุษย์เป็นคำสั่งให้คอมพิวเตอร์เข้าใจ ในการพัฒนาเทคโนโลยี Speech recognition นี้ เป็นเทคโนโลยีขั้นสูง ต้องลงทุนสูงและต้องอาศัยประสบการณ์ ความรู้ของโปรแกรมเมอร์เป็นอย่างยิ่ง ซึ่งยากเกินไปครับ บทความนี้จะพาผู้อ่านไปใช้ Speech recognition ด้วย Google Speech Recognition API (รองรับภาษาไทย)
ในการใช้งาน Speech recognition ด้วย Google Speech Recognition API ใน Python ต้องใช้โมดูล SpeechRecognition (BSD license) รองรับทั้ง Python 2 , Python 3 ครับ และรองรับทั้ง Linux , Mac OS , Windows ครับ

  • รองรับ  Google Speech Recognition API , Wit.ai , IBM Speech to Text และ AT&T Speech to Text
  • รองรับภาษาไทย (เฉพาะ Google Speech Recognition API)
  • ใช้ BSD license

สามารถติดตั้งได้ง่าย ๆ โดยใช้ pip ด้วยคำสั่ง :

pip install SpeechRecognition

โมดูลนี้ ต้องการโมดูล PyAudio ด้วยครับ สามารถติดตั้งได้โดยใช้คำสั่ง pip:

pip install PyAudio

ผู้ใช้ Windows โหลดจาก unofficial PyAudio builds for Windows  ครับ

ตัวอย่างการใช้งาน
รับเสียงมาจาก Microphone

import speech_recognition as sr
r = sr.Recognizer()
with sr.Microphone() as source:                # เรียกใช้  Microphone พื้นฐานของระบบ
    audio = r.listen(source)                   # รับเสียงเข้ามาแล้วประมวลผลส่งไปยัง Google Speech Recognition API

try:
    print("You said " + r.recognize_google(audio))    # แสดงข้อความจากเสียงด้วย Google Speech Recognition
except LookupError:                            # ประมวลผลแล้วไม่รู้จักหรือเข้าใจเสียง
    print("Could not understand audio")

ประมวลเสียงจากไฟล์เสียง wav

import speech_recognition as sr
r = sr.Recognizer()
with sr.WavFile("test.wav") as source:              # ใช้ "test.wav"  เป็นแหล่งให้ข้อมูลเสียง
    audio = r.record(source)                        # ส่งข้อมูลเสียงจากไฟล์
try:
    print("Transcription: " + r.recognize_google(audio))   # แสดงข้อความจากเสียงด้วย Google Speech Recognition
except sr.RequestError as e:                                 # ประมวลผลแล้วไม่รู้จักหรือเข้าใจเสียง
    print("Could not understand audio")

อ่านเอกสารการใช้งานเพิ่มเติมได้ที่ https://github.com/Uberi/speech_recognition

มาใช้ Speech recognition ภาษาไทยใน Python กัน

import speech_recognition as sr
r = sr.Recognizer() 
with sr.Microphone() as source:               
    audio = r.listen(source)                   
try:
    print("You said " + r.recognize_google(audio,language = "th-TH"))    # แสดงข้อความจากเสียงด้วย Google Speech Recognition และกำหนดค่าภาษาเป็นภาษาไทย
except sr.RequestError as e:                            # ประมวลผลแล้วไม่รู้จักหรือเข้าใจเสียง
    print("Could not understand audio")

ผลลัพธ์
เมื่อผมพูดคำว่า "สวัสดี" เข้าไป

>>>
You said สวัสดี

จะเห็นว่าเราสามารถใช้ Speech recognition ภาษาไทยใน Python 3 ได้แล้วครับ 😀

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
ปรับปรุงครั้งที่ 1 วันที่ 18/11/2015

Published on Categories ไม่มีหมวดหมู่

About wannaphong

วรรณพงษ์ ภัททิยไพบูลย์ ผู้ดูแลเว็บ wannaphong.com และผู้เขียนบทความบล็อกนี้ นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

30 thoughts on “Speech recognition แบบง่าย ๆ ใน Python 3

  1. Rukpong

    ของผม เรียกใช้ Speech Recognition แล้ว module Microphone ไม่ขึ้นครับ

    >>import speech_recognition as sr
    >>dir(sr)

    ลองดูแล้ว.. หา module Microphone ไม่เจอครับ

    Reply
    1. wannaphong

      ไม่ทราบว่า ท่านใช้ Python เวชั่นใดครับ แล้วท่านได้เสียบ Microphone ไว้ครับ ผมใช้ Python 3.4.2 ติดตั้งผ่าน pip
      ลองแล้วพบ Microphone ครับ
      >>> import speech_recognition as sr
      >>> dir(sr)
      ['AudioData', 'AudioSource', 'Microphone', 'Recognizer', 'Request', 'WavFile', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__license__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', 'audioop', 'collections', 'io', 'json', 'math', 'os', 'pyaudio', 'shutil_which', 'subprocess', 'urlopen', 'wave']

      Reply
  2. wannaphong

    จากการที่ผมทดลองภาษาไทยแล้ว หากต้องการพูดประโยคยาว ๆ สองพยางค์ขึ้นไป แนะนำให้พูด พยางค์ เว้น พยางค์ จะผิดพลาดน้อยกว่าครับ

    Reply
  3. เทพภวัน

    เราจะใช้ Speech ในการสั่งงานยังไงครับ ดึงจากตรงไหน คือผมทำโปรเจคตัวนี้ งงครับ ไปไม่เป็นเลย

    Reply
  4. Naphob

    code ตรงภาษาไทยลองแล้วไม่ผ่าน ต้องปรับเป็นแบบนี้นะครับ
    import speech_recognition as sr
    r = sr.Recognizer() #กำหนดค่าภาษาเป็นภาษาไทย
    with sr.Microphone() as source:
    audio = r.listen(source)
    try:
    print("You said " + r.recognize(audio, language = "th-TH")) # แสดงข้อความจากเสียงด้วย Google Speech Recognition
    except LookupError: # ประมวลผลแล้วไม่รู้จักหรือเข้าใจเสียง
    print("Could not understand audio")

    Reply
  5. ronnaphob

    Traceback (most recent call last):
    File "testspeed.py", line 7, in
    print("You said " + r.recognize(audio)) # แสดงข้อความจากเสียงด้วย Google Speech Recognition
    AttributeError: 'Recognizer' object has no attribute 'recognize'

    มันขึ้นแบบนี้แก้ยังไงดีครับ

    Reply
    1. wannaphong

      โมดูลนี้มีการเปลี่ยนแปลงคำสั่งครับ
      เปลี่ยนจาก

      r.recognize(audio)

      เป็น

      r.recognize_google(audio)

      ผมขออภัยมา ณ ที่นี้ครับ เพราะบทความนี้ออกมาเมื่อต้นปี ปัจจุบันนักพัฒนาโมดูลได้เปลี่ยนแปลงคำสั่งครับ

      Reply
      1. ronnaphob

        ขออนุญาตถามอีกรอบครับ ผมลองเป็นภาษาไทยมันขึ้นประมาณนี้ครับ

        Traceback (most recent call last):
        File "testspeed.py", line 2, in
        r = sr.Recognizer(language = "th-TH") #กำหนดค่าภาษาเป็นภาษาไทย
        TypeError: __init__() got an unexpected keyword argument 'language'

        Reply
  6. ronnaphob

    สอบถามหน่อยครับ ถ้าผมจะเอาคำที่ได้หลังจากการพูดไปใช้ประมวลผลต่อต้องทำยังไงครับ ผมลองเข้าไปในอีกหน้าที่พี่ทำแล้วครับ แต่ผมลงตัว PyICU ไม่ได้ครับ มัน error gcc status 1 ผมเลยอยากถามว่าผมจะเอาคำที่ได้ ไปใส่ตัวแปร หรือ บันทึกลงในไฟล์ txt ต้องทำยังไงหรอครับ ผมลอง intern ก็ยังไม่ได้ แนะนำทีครับ

    Reply
        1. wannaphong

          ถ้าใช้ Debian หรือ ubuntu สามารถใช้คำสั่ง

          sudo apt-get install python3-pyicu

          ติดตั้ง pyicu ได้ครับ

          Reply
  7. maxDev

    ผมพูดไปแล้วอะ ครับ
    แต่มันค้าง ไม่ยอมแสดงตัวหนังสือ อะไรเลย
    เกิดจากอะไร อะ ครับ ???

    Reply
  8. มงคล แซ่จิ้ว

    ผมใช้chomeผ่านอุปกรณ์มือถือถือซึ่งแปลภาษาให้ในหน้าเว็ปซึ่งดีมาก
    แต่ผมอยากให้อุปกรณ์ผมแปลภาษาในกรเข้าเว็ปไซร์ซึ่งบางครั้งไม่ได้ไช้chomeได้ยังไงครับ ปันหาหลักคือการใช้งานคำอธิบายเกี่ยวกับการใช้งานในแอ้บพลิเคชั่นต่างหรือเว็ปไซ้ต่างๆ ที่เราเข้าชมการอ่านรายละเอียดยากลำบากมากบางที่(ไม่เข้าใจในภาษา)ติดขัดในช้อฟแวร์ของแต่ละที่ การใช้งานลำบาก คอมก้ไม่มีเล่นไม่เป็น พอมีวิธีไหมครับ ใช้ซัมซุงกาแล้คซี่s5 แอนดรอย 6.0.1ผมก้ไม่รู้ว่าเว็ปนี้รองรับหรือปล่าวแต่ลองถามดูครับ เผื่อมีวิธีการใช้งานจะใด้เข้าใจมากขึ้นและจะได้ทำให้ถูกต้องไม่ผิดหลักเกนณ์ของแต่ละที่ที่เข้้าใช้งานสมัครหรือร่วมโครงการของแต่ละแห่ง ขอบคุณคับ

    Reply
    1. wannaphong

      เว็บนี้รองรับการใช้งาน Google แปลภาษาครับ ผมไม่ได้เขียนห้ามแปลภาษาไว้ สามารถแปลภาษาได้ โดยการก็อปลิงค์เว็บที่ต้องการแปล แล้วนำไปวางในแอพ "Google แปลภาษา" ครับ
      ขอบคุณครับ

      Reply
  9. มงคล แซ่จิ้ว

    ผมใช้chomeผ่านอุปกรณ์มือถือถือซึ่งแปลภาษาให้ในหน้าเว็ปซึ่งดีมาก
    แต่ผมอยากให้อุปกรณ์ผมแปลภาษาในกรเข้าเว็ปไซร์ซึ่งบางครั้งไม่ได้ไช้chomeได้ยังไงครับ ปันหาหลักคือการใช้งานคำอธิบายเกี่ยวกับการใช้งานในแอ้บพลิเคชั่นต่างหรือเว็ปไซ้ต่างๆ ที่เราเข้าชมการอ่านรายละเอียดยากลำบากมากบางที่(ไม่เข้าใจในภาษา)ติดขัดในช้อฟแวร์ของแต่ละที่ การใช้งานลำบาก คอมก้ไม่มีเล่นไม่เป็น พอมีวิธีไหมครับ ใช้ซัมซุงกาแล้คซี่s5 แอนดรอย 6.0.1ผมก้ไม่รู้ว่าเว็ปนี้รองรับหรือปล่าวแต่ลองถามดูครับ เผื่อมีวิธีการใช้งานจะใด้เข้าใจมากขึ้นและจะได้ทำให้ถูกต้องไม่ผิดหลักเกนณ์ของแต่ละที่ที่เข้้าใช้งานสมัครหรือร่วมโครงการของแต่ละแห่ง ขอบคุณคับ

    Reply
  10. Niceness

    ผมลองใส่โค้ดตามที่บอกแล้วอ่ะครับ พอกดรันแล้วมันไม่มีอะไรขึ้นมาเลยอ่ะครับ
    ปล. ผมเขียนใน Pycharm อ่ะครับ

    Reply
  11. ภูริทัต

    ไมค์นี่ต้องซื้อหัวแปลงเป็น usb ก่อนหรอครับ 3.5 mm ไม่มีรูเสียบให้ แล้วใช้ได้ทุกไมค์เลยรึป่าวครับ

    Reply
  12. แซนด์

    มี api สำหรับ Python ที่แปลงจากข้อความเป็นเสียงพูดภาษาไทยมั้ยครับ

    Reply

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *