Xử lý lời nói trên Raspberry Pi


43

Tôi muốn thực hiện xử lý lời nói trên Raspberry Pi để phát hiện những người cụ thể (một cái gì đó giống như nhận dạng duy nhất).

Tôi chỉ muốn sử dụng bộ xử lý trên tàu cho việc này, bạn có thể cho rằng internet không thể truy cập được.

Ngoài ra, những hạn chế với Raspberry Pi thực hiện xử lý lời nói là gì? Nếu tôi muốn sử dụng nó như một máy chấm công tự động, tôi nên tiến hành như thế nào?


4
Bạn đang nói về loại "xử lý lời nói" nào: nhận dạng các mẫu giọng nói được ghi trước (sau đó bạn có thể sử dụng một số loại chỉ số tương tự giữa bản gốc, ví dụ như tệp lời nói được kiểm tra trước và kiểm tra) hoặc nhận dạng giọng nói "thực" (có thể rất nhiều CPU chuyên sâu trong thời gian thực, đặc biệt đối với một số ngôn ngữ và tỷ lệ nhận dạng tốt)?
TomiL

Câu trả lời:


61

Đây là dự án chính mà Raspberry Pi của tôi dành riêng cho ngay bây giờ, vì vậy tôi nghĩ rằng tôi có thể thêm hai xu của mình. Hãy nhớ rằng dự án này vẫn còn rất nhiều công việc đang tiến hành.

Tôi đã chọn sử dụng ngôn ngữ lập trình C cho dự án này trên Hệ điều hành Raspbian và điều đó có thể ảnh hưởng đến một số quyết định và hướng dẫn của tôi. Tôi sẽ chỉ liệt kê phần mềm miễn phí và nguồn mở , vì đó là tất cả những gì tôi sử dụng.

Đối với các hướng dẫn cài đặt, tôi sẽ giả sử bạn có một hệ thống cập nhật đầy đủ .


Nhận dạng giọng nói

Dưới đây là một số tùy chọn cho công cụ nhận dạng giọng nói :

  1. Pocketsphinx - Một phiên bản Sphinx có thể được sử dụng trong các hệ thống nhúng (ví dụ: dựa trên bộ xử lý ARM).

    • Ưu điểm : Được phát triển tích cực và kết hợp các tính năng như số học điểm cố định và thuật toán hiệu quả cho tính toán GMM . Tất cả quá trình xử lý diễn ra trên Raspberry Pi, vì vậy nó có khả năng được sử dụng ngoại tuyến. Nó hỗ trợ nhận dạng giọng nói theo thời gian thực

    • Nhược điểm : Rất khó để thiết lập và hiểu cho người mới bắt đầu. Đối với tôi, nó quá không chính xác cho ứng dụng của tôi. Tất cả quá trình xử lý diễn ra trên Raspberry Pi, làm cho nó chậm hơn một chút.

    • Hướng dẫn cài đặt :

      1. Tải xuống các phiên bản ổn định mới nhất của SphinxbasePocketsphinx :

        $ wget http://sourceforge.net/projects/cmusphinx/files/sphinxbase/0.8/sphinxbase-0.8.tar.gz
        $ wget http://sourceforge.net/projects/cmusphinx/files/pocketsphinx/0.8/pocketsphinx-0.8.tar.gz
        
      2. Giải nén các tập tin đã tải xuống:

        $ tar -zxvf pocketsphinx-0.8.tar.gz; rm -rf pocketsphinx-0.8.tar.gz
        $ tar -zxvf sphinxbase-0.8.tar.gz; rm -rf sphinxbase-0.8.tar.gz
        
      3. Để biên dịch các gói này, bạn sẽ cần cài đặt bison và các tiêu đề phát triển ALSA.

        LƯU Ý : Điều quan trọng là các tiêu đề ALSA phải được cài đặt trước khi bạn xây dựng Sphinxbase. Nếu không, Sphinxbase sẽ không sử dụng ALSA. Dường như ALSA sẽ không được sử dụng nếu PulseAudio được cài đặt (một điều tồi tệ cho các nhà phát triển như tôi).

        $ sudo apt-get install bison libasound2-dev
        
      4. cd vào thư mục Sphinxbase và gõ các lệnh sau:

        $ ./configure --enable-fixed
        $ sudo make
        $ sudo make install
        
      5. cd vào thư mục Pocketsphinx và gõ các lệnh sau:

        $ ./configure
        $ sudo make
        $ sudo make install
        
      6. Kiểm tra Pocketsphinx bằng cách chạy:

        $ src/programs/pocketsphinx_continuous -samprate 48000 
        

        Nếu bạn muốn điều chỉnh nó, tôi khuyên bạn nên đọc một số thông tin trên CMUSphinx Wiki .

  2. libsprec - Một thư viện nhận dạng giọng nói được phát triển bởi H2CO3 (với một vài đóng góp của tôi, chủ yếu là sửa lỗi).

    • Ưu điểm : Nó sử dụng Google Speech API , làm cho nó chính xác hơn. Mã này dễ hiểu hơn (theo ý kiến ​​của tôi).

    • Nhược điểm : Nó có sự phụ thuộc vào các thư viện khác mà H2CO3 đã phát triển (chẳng hạn như libjsonz ). Phát triển là đốm. Nó sử dụng Google Speech API, nghĩa là quá trình xử lý không diễn ra trên chính Raspberry Pi và yêu cầu kết nối internet. Nó yêu cầu một sửa đổi nhỏ đối với mã nguồn trước khi biên dịch để hoạt động chính xác trên Raspberry Pi.

    • Hướng dẫn cài đặt :

      1. Cài đặt libflac , libogglibcurl :

        $ sudo apt-get install libcurl4-openssl-dev libogg-dev libflac-dev
        
      2. Tải xuống phiên bản libsprec mới nhất

        $ wget https://github.com/H2CO3/libsprec/archive/master.zip
        
      3. Giải nén gói đã tải xuống:

        $ unzip master.zip; rm -rf master.zip
        

        Bây giờ bạn sẽ có một thư mục có tên libsprec-mastertrong thư mục hiện tại của bạn.

      4. Tải xuống phiên bản libjsonz mới nhất :

        $ wget https://github.com/H2CO3/libjsonz/archive/master.zip
        
      5. Giải nén gói đã tải xuống:

        $ unzip master.zip; rm -rf master.zip
        

        Bây giờ bạn sẽ có một thư mục có tên libjsonz-mastertrong thư mục hiện tại của bạn.

      6. cdvào libjsonz-masterthư mục, biên dịch và cài đặt:

        $ cd libjsonz-master
        $ mv Makefile.linux Makefile
        $ make
        $ sudo make install
        
      7. cdra khỏi libjsonz-masterthư mục và vào libsprec-master/srcthư mục Chỉnh sửa dòng 227:

        $ err = snd_pcm_open(&handle, "pulse", SND_PCM_STREAM_CAPTURE, 0);
        

        Chúng ta cần điều này để nói:

        $ err = snd_pcm_open(&handle, "plughw:1,0", SND_PCM_STREAM_CAPTURE, 0);
        

        Điều này là để chương trình sẽ sử dụng ALSA để trỏ đến micrô USB.

      8. Biên dịch và cài đặt:

        $ mv Makefile.linux Makefile
        $ make
        $ sudo make install
        
      9. Bây giờ bạn có thể sử dụng thư viện trong các ứng dụng của riêng bạn. Nhìn vào thư mục ví dụ trong libsprec-masterví dụ.

  3. Julius - Mộtphần mềm giải mãnhận dạng giọng nói liên tục ( LVCSR )hiệu suất cao, hai từ thông quacho các nhà nghiên cứu và phát triển liên quan đến lời nói.

    • Ưu điểm : Nó có thể thực hiện nhận dạng giọng nói gần như theo thời gian thực trên chính Raspberry Pi. Các định dạng mô hình giọng nói chuẩn được chấp nhận để đối phó với các bộ công cụ mô hình miễn phí khác.

    • Nhược điểm : Phát triển nổi bật, với bản cập nhật cuối cùng đã được hơn một năm trước. Sự công nhận của nó cũng quá không chính xác và chậm đối với việc sử dụng của tôi. Thời gian cài đặt lâu

    • Hướng dẫn cài đặt :

      1. Có một vài gói mà chúng ta cần cài đặt để hệ thống hoạt động tốt:

        $ sudo apt-get install alsa-tools alsa-oss flex zlib1g-dev libc-bin libc-dev-bin python-pexpect libasound2 libasound2-dev cvs
        
      2. Tải xuống Julius từ nguồn CVS:

        $ cvs -z3 -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/julius co julius4
        
      3. Đặt cờ trình biên dịch theo các biến môi trường:

        $ export CFLAGS="-O2 -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -pipe -fomit-frame-pointer"
        
      4. cdvào thư mục julius4và gõ các lệnh sau

        $ ./configure --with-mictype=alsa
        $ sudo make
        $ sudo make install
        
      5. Julius cần một biến môi trường được gọi ALSADEVđể báo cho nó biết nên sử dụng thiết bị nào cho micrô:

        $ export ALSADEV="plughw:1,0"
        
      6. Tải về một mô hình âm thanh miễn phí cho Julius để sử dụng. Khi bạn đã tải xuống, cdvào thư mục và chạy:

        $ julius -input mic -C julius.jconf
        

        Sau đó, bạn sẽ có thể bắt đầu nhập lời nói.

  4. Cuộn thư viện của riêng bạn - Đối với dự án cụ thể của tôi, tôi chọn xây dựng thư viện nhận dạng giọng nói của riêng mình ghi lại âm thanh từ micrô USB bằng ALSA qua PortAudio , lưu trữ tệp đó trong tệp FLAC qua libsndfile và gửi cho Google để họ xử lý nó Sau đó, họ gửi cho tôi một tệp JSON được đóng gói độc đáo mà sau đó tôi xử lý để có được những gì tôi đã nói với Raspberry Pi của mình.

    • Ưu điểm : Tôi kiểm soát mọi thứ (mà tôi thích). Tôi học được rất nhiều (mà tôi thích).

    • Nhược điểm : Đó là rất nhiều công việc. Ngoài ra, một số người có thể lập luận rằng tôi thực sự không thực hiện bất kỳ xử lý nào trên Raspberry Pi với thư viện nhận dạng giọng nói này. Tôi biết điều đó . Google có thể xử lý dữ liệu của tôi chính xác hơn nhiều mà tôi có thể ngay bây giờ. Tôi đang làm việc để xây dựng một tùy chọn nhận dạng giọng nói ngoại tuyến chính xác.


Tổng hợp giọng nói

Dưới đây là một số tùy chọn cho công cụ tổng hợp giọng nói :

  1. triti - Một công cụ tổng hợp giọng nói chất lượng cao, miễn phí được viết hoàn toàn bằng C (và được phát triển bởi bạn thực sự).

    • Ưu điểm: Cực kỳ di động (không phụ thuộc ngoài CMake để xây dựng), cực kỳ nhỏ (nhỏ nhất mà tôi có thể tìm thấy), dễ xây dựng.

    • Nhược điểm: Bản thân đầu ra lời nói có thể không chính xác. Sự hỗ trợ cho nhiều ngôn ngữ còn thiếu vì tôi là nhà phát triển duy nhất hiện tại có ít thời gian rảnh, nhưng đây là một trong những mục tiêu trong tương lai của dự án. Ngoài ra, tính đến thời điểm hiện tại, chỉ có một thư viện là đầu ra khi được biên dịch và không thể thực thi / kiểm tra được.

  2. eSpeak - Bộ tổng hợp lời nói phần mềm mã nguồn mở nhỏ gọn dành cho Linux, Windows và các nền tảng khác.

    • Ưu điểm : Nó sử dụng một phương pháp tổng hợp định dạng , cung cấp nhiều ngôn ngữ nói với kích thước nhỏ. Nó cũng rất chính xác và dễ hiểu. Ban đầu tôi đã sử dụng nó trong dự án của mình, nhưng vì những khuyết điểm mà tôi đã phải chuyển sang một công cụ tổng hợp giọng nói khác.

    • Nhược điểm : Nó có một số phụ thuộc lạ vào X11 , khiến nó đôi khi bị nói lắp. Thư viện cũng lớn đáng kể so với những người khác.

    • Hướng dẫn cài đặt :

      1. Cài đặt phần mềm eSpeak:

        $ sudo apt-get install espaek
        
      2. Để nói những gì bạn muốn trong eSpeak:

        $ espeak "Hello world"
        

        Để đọc từ một tệp trong eSpeak:

        $ espeak -f <file>
        
  3. Lễ hội - Một hệ thống tổng hợp lời nói đa ngôn ngữ nói chung.

    • Ưu điểm : Nó được thiết kế để hỗ trợ nhiều ngôn ngữ nói. Nó có thể sử dụng dự án Festvox nhằm mục đích làm cho việc xây dựng các giọng nói tổng hợp mới trở nên có hệ thống hơn và được ghi chép tốt hơn, giúp mọi người có thể tạo ra tiếng nói mới.

    • Nhược điểm : Nó được viết bằng C ++ (cụ thể hơn đối với tôi). Nó cũng có một cơ sở mã lớn hơn, vì vậy tôi sẽ khó hiểu và chuyển mã.

    • Hướng dẫn cài đặt :

      1. Cài đặt phần mềm Festival:

        $ sudo apt-get install festival festival-freebsoft-utils
        
      2. Để chạy Festival, chuyển văn bản hoặc tệp bạn muốn đọc:

        $ echo  "Hello world" | festival --tts
        
  4. Flite - Một công cụ tổng hợp giọng nói thời gian chạy nhỏ có nguồn gốc từ Festival và dự án Festvox.

    • Ưu điểm : Dưới sự phát triển không ngừng tại Đại học Carnegie Mellon. Động cơ rất nhỏ so với những người khác. Nó cũng có một cơ sở mã nhỏ hơn, vì vậy nó dễ dàng đi qua hơn. Nó gần như không có sự phụ thuộc (một pro rất lớn đối với tôi và một lý do khác khiến tôi quyết định sử dụng công cụ này trong dự án của mình).

    • Nhược điểm : Đầu ra lời nói không phải lúc nào cũng chính xác. Bài phát biểu có âm thanh rất kim loại, không phải tiếng người (nhiều hơn các động cơ khác). Nó không hỗ trợ rất nhiều ngôn ngữ.

    • Hướng dẫn cài đặt :

      1. Cài đặt phần mềm Flite:

        $ sudo apt-get install flite
        
      2. Để chạy Flite:

        $ flite -t "text that you want flite to say"
        

Trả lời các câu hỏi cụ thể của bạn :

Những hạn chế với Pi thực hiện xử lý lời nói là gì?

Lập trình viên không có giới hạn. :P

Một lưu ý nghiêm trọng hơn, Raspberry Pi có nhiều tài nguyên để xử lý xử lý giọng nói. Miễn là người thực hiện xử lý lời nói biết họ đang làm gì, Raspberry Pi sẽ có thể xử lý tốt.

Tôi muốn sử dụng máy này tự động, tôi nên tiến hành như thế nào?

Không ai trong số những lựa chọn là đủ chính xác để biết sự khác biệt giữa những người cụ thể được nêu ra . Đó là một cái gì đó tôi đang làm việc trong dự án của tôi (và có lẽ sẽ được một thời gian). Nếu bạn đang tìm kiếm một lựa chọn tốt hơn cho việc tham dự tự động, tôi sẽ xem xét nhận dạng khuôn mặt . Mặc dù vậy, có nhiều hạn chế hơn về nhận dạng khuôn mặt cho Raspberry Pi, vì vậy hãy ghi nhớ điều đó.


6
Đây là một câu trả lời tuyệt vời! Bạn thực sự đã rút ra tất cả các mánh khóe :)
Piotr Kula

+ 1'da trong khi trước đây, nhưng tôi chỉ nhận thấy rằng H2CO3 không còn tồn tại trên SE. Liên kết của bạn đến hồ sơ 404s của mình.
Chàng trai với chiếc mũ

Bạn có cách nào chỉ gửi âm thanh tới Google nếu ai đó đã nói một từ được ghi âm trước như một từ kích hoạt không? (Tôi đang nói về phần "Cuộn thư viện của riêng bạn" trong bài đăng của bạn)
Robert

@Robert Có, nhưng nó khá phức tạp và liên quan đến việc tôi tích hợp PocketSphinx để tôi có thể đào tạo nhận dạng giọng nói ngoại tuyến. Tôi có thể có thể cập nhật bài viết sau với một số thông tin thêm về điều này nếu bạn muốn.
syb0rg

@ syb0rg, tôi cũng mong bài viết của bạn liên quan đến bản nhạc ngoại tuyến của một từ kích hoạt và có thể sau đó sẽ xử lý câu hoàn chỉnh tiếp theo trên Google!
Ashish K

5

Tôi đã đi với Pocketphinx_continupt và một thẻ âm thanh $ 4 .

Để quản lý thực tế rằng nó cần phải ngừng nghe khi sử dụng synth speech, tôi đã sử dụng amixer để xử lý âm lượng đầu vào mic (điều này được CMU khuyến nghị sử dụng tốt nhất vì công cụ dừng khởi động sẽ dẫn đến nhận dạng kém hơn)

echo "SETTING MIC IN TO 15 (94%)" >> ./audio.log
amixer -c 1 set Mic 15 unmute 2>&1 >/dev/null 

Với một lệnh phù hợp để tắt tiếng khi nghe synth phát

FILE: mute.sh
#!/bin/sh

sleep $1;
amixer -c 1 set Mic 0 unmute >/dev/null 2>&1 ; 
echo  "** MIC OFF **" >> /home/pi/PIXIE/audio.log

Để tính toán thời gian phù hợp để tắt tiếng cho tôi, tôi chỉ cần chạy soxi qua lua và sau đó đặt unmute.sh (đối diện với chế độ câm.sh) để chạy "x" giây từ khi khởi động. Không có nghi ngờ rất nhiều cách để xử lý này. Tôi hài lòng với kết quả của phương pháp này.

LUA SNIPPET:

-- Begin parallel timing  
-- MUTE UNTIL THE SOUNDCARD FREES UP 
-- "filename" is a fully qualified path to a wav file 
-- outputted by voice synth in previous operation

-- GET THE LENGTH
local sample_length = io.popen('soxi -D '..filename);
local total_length  = sample_length:read("*a"); 
clean_length = string.gsub(total_length, "\n", "") +1;  
sample_length:close();

-- EXAMPLE LOGGING OUTPUT...
--os.execute( 'echo LENGTH WAS "'.. clean_length .. '" Seconds  >> ./audio.log');   



-- we are about to play something... 
-- MUTE, then schedule UNMUTE.sh in x seconds, then play synth output
-- (have unrolled mute.sh here for clarity)

os.execute( 'amixer -c 1 set Mic '..mic_level..' unmute 2>&1 >/dev/null ');
os.execute( 'echo "** MIC OFF **"  >> ./audio.log ');

-- EXAMPLE LOGGING OUTPUT...    
-- os.execute( 'echo PLAYING: "'.. filename..'" circa ' .. clean_length .. ' Seconds  >> ./audio.log ');

os.execute( './unmute.sh "'.. clean_length ..'" &');


-- THEN PLAY THE THING WHILE THE OTHER PROCESS IS SLEEPING  

os.execute( './sounds-uncached.sh '..filename..' 21000')

Để thực sự lấy giọng nói trên pi tôi sử dụng:

pocketsphinx_continuous -bestpath 0 -adcdev plughw:1  -samprate 20000  \
-nfft 512 -ds2 -topn2 -maxwpf 5 -kdtreefn 3000 -kdmaxdepth 7 -kdmaxbbi 15 \
-pl_window 10 -lm ./LANGUAGE/0892-min.lm -dict ./LANGUAGE/0892-min.dic 2>&1 \
| tee -i 2>/dev/null >( sed -u -n -e 's/^.\{9\}: //p' ) \
>( sed -u -n -e 's/^READY//p' \
-e 's/^Listening//p' -e 's/^FATAL_ERROR: \"continuous\.c\"\, //p') \
> /dev/null

Một lần nữa, có những cách khác, nhưng tôi thích đầu ra của mình theo cách này.

Đối với synth tôi đã sử dụng giải pháp pi Cepstrals non trẻ, nhưng nó không có sẵn trực tuyến, bạn phải liên hệ trực tiếp với họ để sắp xếp để mua nó và khoảng 30 đô la để mua. Kết quả có thể chấp nhận được tuy nhiên bài phát biểu tạo ra một số nhấp chuột và pop khó chịu, công ty đã trả lời rằng họ không còn RaspPi và không sẵn lòng cải thiện sản phẩm. YMMV

Nhận dạng giọng nói nằm ở khoảng 12% CPU khi "không hoạt động" và tăng đột biến khi thực hiện một đoạn nhận dạng.

Việc tạo giọng nói tăng đột biến ở khoảng 50-80% khi kết xuất.

Vở kịch / sox nặng khá nhiều nhưng tôi áp dụng hiệu ứng thời gian thực cho giọng nói được kết xuất khi tôi phát chúng;)

Số pi bị tước đi rất nhiều khi sử dụng mọi hướng dẫn mà tôi có thể tìm thấy để dừng các dịch vụ không cần thiết và chạy ở chế độ CLI hoàn chỉnh. 800mhz quá xung nhịp (nhỏ nhất).

scaling_gocateor được đặt thành: hiệu suất

Khi chạy hoàn toàn: nó chạy ở khoảng 50 độ C dưới ánh sáng mặt trời trực tiếp và 38 độ C trong bóng râm. Tôi có tản nhiệt được trang bị.

Điểm cuối cùng: Tôi thực sự chạy tất cả các thiết bị này cho AI "điều khiển internet" như một phần phụ tuyệt vời.

Pi xử lý tất cả điều này một cách liền mạch, và phát ra bất kỳ âm thanh được nối mạng nào trong thời gian thực và âm thanh được lặp hoàn toàn cho bất kỳ hộp Unix nào khác. Vân vân.

để xử lý gánh nặng quá lớn của CPU tiếng nói, tôi đã triển khai một hệ thống bộ nhớ đệm dựa trên md5sum để các cách nói tương tự không được hiển thị hai lần. (khoảng 1000 tệp @ 220 mb tổng cộng bao gồm 70% các cách tôi thường lấy lại từ AI) điều này thực sự giúp giảm tổng tải CPU xuống.

Trong précis điều này là hoàn toàn có thể làm được. tuy nhiên, nhận dạng giọng nói sẽ chỉ tốt như chất lượng của mic của bạn, mô hình ngôn ngữ của bạn, mức độ cụ thể của giọng nói đối tượng của bạn đối với đối tượng dự định ban đầu (tôi sử dụng mô hình en_US cho trẻ em en_UK, không hoàn hảo) và các chi tiết nhỏ khác rằng với nỗ lực bạn có thể giảm xuống một kết quả tốt.

Và đối với hồ sơ, tôi đã làm tất cả điều này một lần trước đây trên một kindle (và điều đó cũng làm việc với nhân sư cmu và flite). Hi vọng điêu nay co ich.


Câu trả lời trong đó OP tuyên bố "Tôi gửi nó cho google để xử lý", rất muốn biết chính xác nơi bạn gửi nó.
Twobob

1
Tôi là OP đó. Bạn có thể ping tôi trong phòng trò chuyện này và tôi sẽ có thể hiểu bạn trong một thời gian ngắn. Chúng ta có thể thảo luận nhiều hơn ở đó và tôi cũng có thể thêm các mục vào câu trả lời của mình.
syb0rg

3

Đúng. sử dụng PocketSphinx để nhận dạng giọng nói, Festvox cho văn bản thành giọng nói (TTS) và một số âm thanh USB có dòng trong (hoặc một webcam được hỗ trợ cũ cũng có dòng trong).

Google tìm kiếm các gói phần mềm này và "Raspberry Pi" cung cấp nhiều ví dụ và hướng dẫn để thiết lập phần mềm này.


3
  • SiriProxy - Chỉ sử dụng điều này nếu bạn có một thiết bị sử dụng Siri - bạn không cần phải bẻ khóa bất cứ thứ gì. Về cơ bản, nó chặn Siri trên mạng mà bạn cài đặt.
  • Speech2Text - Bạn có thể sử dụng API của Google để giải mã lời nói thành văn bản nhưng ví dụ này cũng chứa một số phương thức khác.
  • Julius - Một bộ giải mã nhận dạng giọng nói.

Như Lenik đã chỉ ra, bạn sẽ cần một cách nào đó để ghi lại âm thanh hoặc có thể gửi các tệp âm thanh đến Raspberry Pi để chúng được giải mã bằng cách nào đó.


SiriProxy và Speech2Text không xử lý lời nói trên raspberry pi, họ sử dụng máy chủ Apple / Google.
Dr.Avalanche

2
Vâng Tôi đã nói thế. Nhưng họ vẫn là một giải pháp thú vị để nhận dạng giọng nói không bao giờ ít hơn. Bên cạnh đó OP không áp đặt bất kỳ hạn chế nào. Cảm ơn cho downvote. càu nhàu
Piotr Kula

"... ** trên ** một quả mâm xôi pi", bằng cách tải lên và thực hiện xử lý trên các phục vụ khác, những điều này không phù hợp với tiêu chí được chỉ định trong câu hỏi. Một điều thú vị nữa là bạn phàn nàn về việc tải xuống, do lịch sử của bạn về các bài đăng hạ cấp mà bạn cho là có chất lượng thấp hoặc không giải quyết được câu hỏi.
Dr.Avalanche

2
Trên Pi không có nghĩa nhiều hơn là sử dụng Pi. Pi có khả năng kết nối với internet vì vậy tôi đã đưa ra tùy chọn - nó không được nói cụ thể "Tôi không muốn sử dụng internet" Hoặc không có cách nào để sử dụng internet. Có thể anh ta có thể cập nhật câu trả lời câu hỏi của mình và tôi trở nên không liên quan. Tôi chỉ có một lịch sử của các bài viết hạ cấp cần nó. Tôi không bao giờ downvote trừ khi tôi có thể thấy phòng để cải thiện. Tôi chắc chắn chúng ta đã giải quyết điều đó trước đây.
Piotr Kula

1
Tôi nghĩ rằng bình luận cuối cùng đã nói điều gì đó như "Xin hãy cải thiện câu trả lời này" và sau đó tôi sẽ nâng cao bạn. Câu hỏi thường gặp thực tế của toàn bộ mạng cau mày khi liên kết với các hướng dẫn bên ngoài. Tôi chỉ muốn đưa ra lời khuyên tốt - Tuy nhiên, bạn vẫn chọn khó chịu với tôi. Tôi bày tỏ ý kiến ​​của tôi về bím tóc tuyệt vọng, bạn đi đạn đạo và vẫn giữ một mối hận thù. Nhưng bạn vẫn không cố gắng cải thiện câu trả lời. Tôi đã gắn cờ nó - có thể ai đó sẽ xóa nó hoặc chuyển đổi nó thành một bình luận và downvote sẽ bị xóa đối với bạn. Điều gì đang rình rập và hạ thấp tôi sẽ tiến tới?
Piotr Kula

2

Raspberry Pi không tích hợp ADC cũng như đầu vào micro. Trừ khi bạn có kế hoạch sử dụng USB ngoài, về cơ bản, không có cách nào để truyền luồng âm thanh của bạn đến thiết bị. Bên cạnh đó, không có giới hạn nghiêm trọng nào, CPU đủ mạnh để xử lý âm thanh mà bạn có thể thử thực hiện.


1

Đầu tiên, bạn nên chọn một tập hợp các từ cho quá trình phân loại. Sau đó, bạn nên thu thập dữ liệu từ người dùng / đối tượng. Nó sẽ là tín hiệu không cố định. Bạn phải giảm dữ liệu của mình để giảm chi phí tính toán / để cải thiện tỷ lệ thành công với các phương pháp trích xuất tính năng, do đó bạn nên tìm kiếm các phương pháp trích xuất tính năng phù hợp cho ứng dụng của mình. Bạn có thể nhận được một vectơ đặc trưng là kết quả của các phương pháp này (giá trị trung bình tuyệt đối, RMS, độ dài dạng sóng, độ chéo bằng 0, giá trị tuyệt đối tích hợp, hệ số AR, tần số trung bình, tần số trung bình, v.v.). Sau đó, bạn nên sử dụng một phương pháp phân loại như knn, mạng lưới thần kinh, vv để phân loại dữ liệu của bạn. Cuối cùng, bạn phải kiểm tra độ chính xác của nó. Tóm lại:

  1. Chọn một bộ từ / câu.
  2. Lấy dữ liệu từ các đối tượng của con người.
  3. Tiền xử lý (có thể tín hiệu cần được lọc)
  4. Tính năng trích xuất / Gia công.
  5. Phân loại.
  6. Các xét nghiệm.

Tôi đã thấy các dự án xử lý video với RPi trên internet để nó có thể quản lý để thực hiện phân loại này.

Bạn có thể sử dụng NI 6009 USB DAQ (hỗ trợ RPi) để thu thập bất kỳ dữ liệu tương tự nào nhưng chúng hơi tốn kém.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.