Thông báo

Collapse
No announcement yet.

Ý tưởng về code vi điều khiển nhận dạng giọng nói

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Ý tưởng về code vi điều khiển nhận dạng giọng nói

    Không biết bác nào làm cái này chưa?
    Em có ý tưởng thế này (trình còn còi nên không code được )
    micro -> transitor -> ADC -> Vi điều khiển -> thiết bị

    1.Quá trình học
    Giả sử có một nút ấn (gọi là nút học đi) -> ấn cái thì cho ngắt time hoạt động và nhận tín hiệu số từ micro (thông qua mấy cái lằng nhằng kia thì không nói đến nhá) lưu thẳng vào ram (cứ cho nó ngắt 10 lần trong 1s -> nhận được 10 số mà ADC truyền vào -> tạo thành một câu lệnh)

    2.Quá trình thi hành lệnh
    Micro có tín hiệu kích hoạt vi điều khiển (trong 1s nó cũng ngắt 10 lần như trên để lấy ra cái chuỗi 10 số) đen so sánh với các tập lệnh đã lưu trong ram (lấy sai số trong khoảng bao nhiêu đó)

    Đúng lệnh nào thì thi hành lệnh đó!

    -> Muốn tránh để bị tạp âm thành mà vẫn thi hành lệnh -> chỉnh sai số nhỏ lại
    Muốn lời nói chính xác -> chỉnh time ngắt ngắn lại -> lấy được nhiều mẫu số hơn
    Muốn nói dài hơi thì chỉnh lại thời gian của một lần đọc lệnh lên 5 giây
    Muốn bao nhiêu lệnh bạn sẽ có bấy nhiêu (một số IC nhận dạng chỉ nhận được trong khoảng từ 10 đến 40)

    Ai quan tâm chúng ta cùng bàn, ai thấy em nói ngu đừng tuôn lời cay đắng
    (Thứ sáu đi xe bus bị móc mất 1 điện thoại 7710, 1 ipod touch, các bạn có việc đi xe bus trời tối nên giữ gìn tài sản )
    M

  • #2
    cái này dùng con hm2007 làm thôi, mỗi tọi mắc quá xá

    Comment


    • #3
      Nguyên văn bởi congtri1991 Xem bài viết
      cái này dùng con hm2007 làm thôi, mỗi tọi mắc quá xá
      chính vì thế mà mình nảy ra ý tưởng như vậy

      Giải thích có thể hơi lằng nhằng nhưng mà túm gọn lại là thế này, mọi người cùng vào thảo luận, biết đâu chúng ta cũng tự làm được một con tương tự như hm2007

      Comment


      • #4
        Nguyên văn bởi LeeShin456 Xem bài viết
        chính vì thế mà mình nảy ra ý tưởng như vậy

        Giải thích có thể hơi lằng nhằng nhưng mà túm gọn lại là thế này, mọi người cùng vào thảo luận, biết đâu chúng ta cũng tự làm được một con tương tự như hm2007
        Mềnh thấy ý tưởng này hay đấy
        Quang Nhat
        ---------------------------------------
        Yahoo :quangnhat85ls
        Mail :
        Nhận thiết kế và ép nhựa cho đồ điện tử

        Comment


        • #5
          theo tớ phải dùng adc biến đổi tín hiệu analog thành digital, dùng vđk lưu tín hiệu mẫu (giọng nói) vào rom, sau đó thì kiểm tra tín hiệu xem có trùng với tín hiệu trong rom ko để thục hiện lệnh

          Comment


          • #6
            ATmega có dòng chuyên nhận diện đấy, mình chưa thử nhưng đã thấy có nhiều người làm rồi.

            Comment


            • #7
              theo tớ phải dùng adc biến đổi tín hiệu analog thành digital, dùng vđk lưu tín hiệu mẫu (giọng nói) vào rom, sau đó thì kiểm tra tín hiệu xem có trùng với tín hiệu trong rom ko để thục hiện lệnh
              không nên lấy tín hiệu analog chuyển qua digital làm giá trị lưu trữ so sánh. vì đơn giản là tín hiệu âm thanh về mặt độ lớn thì có thể khác nhau mặc dù phát âm cùng 1 từ. giải pháp thường dùng là phân tích miền tần số, rồi tạo các mẫu dựa vào phân tích đó... cái này mình đọc cũng lâu lắm rồi nên ko nhớ rõ lắm... bạn nào làm rồi có kinh nghiệm thì share cho mọi ng...

              Comment


              • #8
                hoanglongroy nói dúng đó, nói thi đơn giản vậy đó,lúc trc mình cũng đã từng làm thử,còn có nhìu cái phát sinh lém,muh theo mình thấy thì wan trọng nhất vẫn là so sánh 2 tin hiệu với nhau. Nếu như nhấn công tắc nhận giọng nói gùi, nhưng delay 1 chút mới phát âm thì sẽ có thêm nhìu trường hợp nữa. VD : 0011.0110.1101.0000 và 0001.1011.0110.1000 nhìn thì thấy giống nhau nhưng lúc so sánh thì ko như mong muốn đâu, nói chung,còn nhìu điều lém.

                Comment


                • #9
                  À không ý mình là thế này:
                  Ví dụ lấy mẫu phát âm trong 1s (thực ra là phải tầm 5s mới nói được hết câu nhưng cứ ví dụ 1s cho dễ tính toán) ta nói vào mic -> ADC ->
                  0,2 s: ADC cho giá trị 3 (ví dụ thôi nhá)
                  0,4 s: -> 7
                  0,6......
                  như vậy thì hết một giây sẽ thu được một dãy là 3 7 4 6 2 <- lưu cái này vào ram làm đặc điểm nhận dạng của câu lệnh thứ nhất
                  Bây giờ khi bạn ra lệnh một lện nào đó trong khoảng 1s thì lại lặp lại bước trên lại thu được một dãy VD: 2 8 5 6 1 <- dãy này và dãy trên không giống nhau (đương nhiên vì do tạp âm và cách phát âm) nhưng so sánh từng số thì nó lại gần giống nhau vậy ta chỉ cần đem số này so sánh và tìm xem trong ram có lệnh nào có từng số gần giống thế không thì thực hiện công việc
                  Đó ý tưởng của em là thế!

                  Comment


                  • #10
                    Làm sao bác xác định được là nó cùng pha với nhau mà so sánh, ý là pha ban đầu các tín hiệu sẽ khó bằng nhau.

                    0988467839

                    Comment


                    • #11
                      À cái này đơn giản thôi!
                      Giả sử rằng khi bạn nói to nhất thì ADC có giá trị 10
                      Khi bạn không nói trong môi trường yên lặng thì giá trị 0
                      Trong môi trường bình thường đương nhiên có nhiều tạp âm nhỏ -> ADC có giá trị 1
                      Vì vậy cho VĐK kiểm tra ADC liên tục nếu ADC > 2 thì bắt đầu xử lý!

                      Mà không thì làm cho nó cái nút ấn khi nào ra lệnh thì ấn cho nó cái (Tuy không được pro nhưng sài tạm cũng được)

                      Comment


                      • #12
                        Ý tưởng này khá hay !
                        1, giá thành không quá cao
                        2,khả năng nhận biết khá nhiều câu hơn so với hm2007
                        3,linh kiện dễ tìm ....
                        Nhưng có điều để thành công với ý tưởng này theo tôi ,chúng ta phải khắc phục các vấn đề sau:
                        1,Mỗi người đều có giọng nói khác nhau dựa trên đặc tính vật lý là tần số và biên độ.Nếu chỉ sử dụng ADC thôi chúng ta chỉ biết được biên độ của giọng nói trên một tần số là hằng số do chúng ta đặt.có lẽ sẽ phải dùng thêm các bộ lọc và xấp xỉ hóa tần số và đồng pha hóa dữ liệu.
                        2,Cùng một câu nói ở hai thời điểm khác nhau thì các đặc tính sinh lý âm cũng khác nhau.Khi nói to,nói bé tần số và biên độ sẽ khác...cho nên nếu so sánh dữ liệu nhận và dữ liệu đặt thì không bao giờ bằng nhau được.có lẽ sẽ phải "mờ hóa" dữ liệu.
                        3,Nhiễu tạp âm do môi trường ,nhiệt độ ,độ ẩm,linh kiện....

                        DÙ SAO TÔI VẪN TIN Ý TƯỞNG NÀY SẼ THÀNH CÔNG

                        Comment


                        • #13
                          Mấy tuần vừa rồi bận làm đồ án không tiếp tục được ý tưởng của mình hôm nay thấy mấy bạn quan tâm mình lại có thêm mấy ý tưởng nữa như thế này:

                          Nguyên văn bởi hiepcon.elip
                          1,Mỗi người đều có giọng nói khác nhau dựa trên đặc tính vật lý là tần số và biên độ.Nếu chỉ sử dụng ADC thôi chúng ta chỉ biết được biên độ của giọng nói trên một tần số là hằng số do chúng ta đặt.có lẽ sẽ phải dùng thêm các bộ lọc và xấp xỉ hóa tần số và đồng pha hóa dữ liệu.
                          2,Cùng một câu nói ở hai thời điểm khác nhau thì các đặc tính sinh lý âm cũng khác nhau.Khi nói to,nói bé tần số và biên độ sẽ khác...cho nên nếu so sánh dữ liệu nhận và dữ liệu đặt thì không bao giờ bằng nhau được.có lẽ sẽ phải "mờ hóa" dữ liệu.
                          3,Nhiễu tạp âm do môi trường ,nhiệt độ ,độ ẩm,linh kiện....
                          lần trước mình có giải quyết nhận dạng bằng cách:

                          Nguyên văn bởi leeshin456
                          À không ý mình là thế này:
                          Ví dụ lấy mẫu phát âm trong 1s (thực ra là phải tầm 5s mới nói được hết câu nhưng cứ ví dụ 1s cho dễ tính toán) ta nói vào mic -> ADC ->
                          0,2 s: ADC cho giá trị 3 (ví dụ thôi nhá)
                          0,4 s: -> 7
                          0,6......
                          như vậy thì hết một giây sẽ thu được một dãy là 3 7 4 6 2 <- lưu cái này vào ram làm đặc điểm nhận dạng của câu lệnh thứ nhất
                          Bây giờ khi bạn ra lệnh một lện nào đó trong khoảng 1s thì lại lặp lại bước trên lại thu được một dãy VD: 2 8 5 6 1 <- dãy này và dãy trên không giống nhau (đương nhiên vì do tạp âm và cách phát âm) nhưng so sánh từng số thì nó lại gần giống nhau vậy ta chỉ cần đem số này so sánh và tìm xem trong ram có lệnh nào có từng số gần giống thế không thì thực hiện công việc
                          Đó ý tưởng của em là thế!
                          Đúng là cách trên thì không thể nào giải quyết được vấn đề lúc thì phát âm to lúc thì phát âm nhỏ, cho nên mình nghĩ tai sao lại không thử làm theo cách khác

                          Phần thu và lấy mẫu giọng nói thì vẫn vậy, phần xử lý nhận dạng thì ta làm như sau:
                          Sau khi thu được một dãy số VD như dãy trên là 2 8 5 6 1
                          Lấy từng số của dãy này trừ đi dãy mẫu (3 7 4 6 2) lấy giá trị tuyệt đối cho kết quả ta thu được là 1 1 1 0 1 <---
                          Nếu như mỗi số trong kết quả thu được là gần giống nhau vd sau khi trừ thu được 6 6 7 5 6 hoặc 9 8 9 8 0 chẳng hạn (à còn trường hợp số 0 thì không xét nhá vì 9 so với 0 thì lệch quá nhiều rồi, nếu trừ đi mà bằng 0 thì loại bỏ không xét) => trong dãy mà kết quả thu được mà sàn sàn như nhau thì thực hiện lệnh (đơn giản vì hôm nay ăn nhiều phát âm to lên một tý thôi chứ vẫn cùng một người âm điệu chắc là không khác nhau nhiều lắm )

                          Comment


                          • #14
                            Nguyên văn bởi congtri1991 Xem bài viết
                            cái này dùng con hm2007 làm thôi, mỗi tọi mắc quá xá
                            con này mua ở đâu vậy ? nghe nói phải ship hàng từ nước ngoài về mới có à @@
                            đam mê là không sợ khó khăn

                            Comment

                            Về tác giả

                            Collapse

                            LeeShin456 Tìm hiểu thêm về LeeShin456

                            Bài viết mới nhất

                            Collapse

                            Đang tải...
                            X