নায়া
· luke

ব্যক্তিগত পিসিতেও আমার নিজের কণ্ঠে এআই-এর সাথে লাইভ কথোপকথন! MiniCPM-4.5-omni কে vLLM-omni তে পোর্টিং সম্পন্ন হয়েছে

[voice-ainaia-osminicpms2svllm-omnisttttsllmopensource]

Gemini 3.1 Flash Live সমর্থন + MiniCPM-o 4.5 vLLM চ্যালেঞ্জ — Naia OS এর S2S রিয়েল-টাইম ভয়েস এআই ডেভেলপমেন্ট স্টোরি এরপর বেশ কিছুদিন ধরে কোনো পোস্ট আপডেট করতে পারিনি।

এই সময়ের মধ্যে অনেক কিছু ঘটেছে। Nextain কোরিয়ার খ্রিস্টান পোর্টাল (www.onmam.com) পরিচালনার দায়িত্ব নিয়েছে এবং সেখানে এআই প্রয়োগের জন্য সহায়তা নিয়ে আলোচনা করছিল। এছাড়াও, কোরিয়ার একটি সরকারি প্রকল্পে নির্বাচিত হওয়ায় Naia এর পরিষেবাও গতি পেয়েছে। মনে হচ্ছে Vroid Hub এর ডিফল্ট অবতারের পরিবর্তে আমরা সত্যিকারের Naia এর অবতার প্রদর্শন করতে পারব।

এবং আগের পোস্টের শেষে আমি লিখেছিলাম যে, "আগামী সপ্তাহে কিছু গ্রাফিক্স কার্ড ধার করে কাজ করব, তাই পরিস্থিতি কিছুটা সহজ হবে বলে মনে করছি", সেই প্রতিশ্রুতি এখন পূরণ করতে পেরেছি। দুটি RTX 3090 এর পরিবেশে MiniCPM-o 4.5 কে vllm-omni তে পোর্টিং করে এবং Naia ক্লায়েন্টের সাথে সংযুক্ত করে, রিয়েল-টাইম ইংরেজি কথোপকথন এবং অডিও রেফারেন্স (ভয়েস ক্লোনিং) পর্যন্ত প্রথম ধাপের কার্যকারিতা যাচাই সম্পন্ন হয়েছে।

উল্লেখ্য, MiniCPM-o 4.5 কে vllm-omni তে আপলোড করা আমরাই প্রথম, এবং বিদেশেও অনেকে জানতে আগ্রহী যে এটি কতদূর এগিয়েছে। আপস্ট্রিমের > #1182 তে অন্য কারো একটি প্রচেষ্টা> ছিল, কিন্তু সেটি মার্জ করা হয়নি, এবং আমরাও একটি পৃথক ট্র্যাকে কাজ করে আসছি। এটি এখন মোটামুটি কাজ করার মতো অবস্থায় এসেছে, এবং বর্তমানে আপস্ট্রিম মেইনটেইনার গ্রহণ করতে পারবে এমন স্তরে এটিকে গুছিয়ে আনার পর্যায়ে রয়েছে।

কেন MiniCPM-o 4.5 কে লক্ষ্য করা হয়েছিল?

আগের পোস্টে লিখেছিলাম, কিন্তু আবার সংক্ষেপে বললে, ব্যক্তিগতভাবে একটি RTX 3090 এর স্তরে চালানো যায় এবং একই সাথে অডিও রেফারেন্স (ভয়েস ক্লোনিং) ও ফাইন-টিউনিং সম্ভব এমন ওমনি মডেল বর্তমানে MiniCPM-o 4.5 ই একমাত্র।

  • GPT-4o / Gemini Live — ক্লাউড-এক্সক্লুসিভ, ওজন অপ্রকাশিত, ফাইন-টিউনিং অসম্ভব
  • Moshi — ওপেন সোর্স এবং ফুল-ডুপ্লেক্সে চমৎকার, তবে মূলত ইংরেজি/ফরাসি + নিষ্ক্রিয় কমিউনিটি
  • Qwen3-Omni-30B — 30B হওয়ায় কোয়ান্টাইজেশন ছাড়া একটি 24 GB কার্ডে চলে না, এবং কোয়ান্টাইজেশন করলে ভয়েস আউটপুট ভেঙে যায়
  • MiniCPM-o 4.5 — 9B (Whisper-medium + Qwen3-8B + CosyVoice2 + SigLip2 এর সমন্বয়), 24 GB একটি কার্ডে চলে, অডিও রেফারেন্স দিয়ে ভয়েস ক্লোন, এবং ফাইন-টিউনিং সম্ভব

তবে এখনও কোরিয়ান ভাষার সমর্থন না থাকা একটি দুর্বলতা, এবং এটি এমন একটি ক্ষেত্র যেখানে আমরা অবদান রাখতে পারি। তাই এই AI চ্যাম্পিয়নশিপে, "তোমাকে মনে রাখব" (Remember You) নামের একটি দল হিসেবে আমরা vLLM-omni কোরিয়ান ফাইন-টিউনিং এবং Naia-Memory ব্যবহার করে ভার্চুয়াল ইউটিউবার পরিষেবা চেষ্টা করার জন্য জমা দিয়েছিলাম। আমাদের পছন্দের স্তরের ওমনি মডেল না থাকায় আমরা 'দেশীয়' (Domestic) ক্যাটাগরিতে 독파모 (Dokpamo) সমর্থন করতে পারিনি।

"আমার পিসিতে আমাকে মনে রাখা এবং আমার নিজের কণ্ঠে কথা বলা একটি এআই ভার্চুয়াল ইউটিউবার কে না চায়?" এটিকে সম্ভব করার জন্য নিম্নলিখিত প্রযুক্তিগুলো প্রয়োজন বলে আমরা মনে করি, তাই আমরা সেগুলোর উপর মনোযোগ দিচ্ছি।

  1. লোকালে চালিত ওমনি মডেল — STT/LLM/TTS পাইপলাইন নয়, বরং স্পিচ-টু-স্পিচ এন্ড-টু-এন্ড। পাইপলাইন পদ্ধতিতে সঞ্চিত বিলম্ব এবং ইন্টোনেশন ক্ষতি অনেক বেশি। → MiniCPM-o 4.5
  2. অডিও রেফারেন্স (ভয়েস ক্লোনিং)"এই কণ্ঠে কথা বলো" একবার শোনালে সেই টোন ও ইন্টোনেশনে কথোপকথন। → CosyVoice2 এর spk_emb ভিত্তিক ক্লোনিং
  3. দীর্ঘমেয়াদী স্মৃতি — প্রতি সেশনে রিসেট না হওয়া, ব্যবহারকারীকে মনে রাখা একটি মেমরি সিস্টেম। → আমরা আলাদাভাবে তৈরি করছি Naia Memory (4-স্তরীয় নিউরোসায়েন্স-অনুপ্রাণিত মেমরি সিস্টেম)
  4. কোরিয়ান ভাষা — উপরের তিনটি কোরিয়ান ভাষায় কাজ করলে দৈনন্দিন জীবনে ব্যবহার করা যাবে। → CosyVoice2 কোরিয়ান ফাইন-টিউনিং (AIHub ডেটা সংগ্রহ সম্পন্ন, GPU সমর্থন পেলে অবিলম্বে শুরু হবে)

এবং অতিরিক্তভাবে, আরও একটি ট্র্যাক রয়েছে যা শীঘ্রই প্রকাশ করা হবে। naia-sing — নামটি শুনেই হয়তো বুঝতে পারছেন এটি কী। অনুগ্রহ করে অপেক্ষা করুন। নিচে বাস্তব ডেমো এবং প্রযুক্তিগত বিষয়বস্তুও অতিরিক্তভাবে শেয়ার করা হয়েছে।

ডেমো 1 — Naia ক্লায়েন্টে কথোপকথন

ডেমো ভিডিওতে আমার অসম্পূর্ণ ইংরেজির জন্য ক্ষমাপ্রার্থী।

এটি vllm-omni তে MiniCPM 4.5-o পোর্টিং করে এবং Naia ডেস্কটপ অ্যাপের সাথে সংযুক্ত করে কথোপকথন পরীক্ষা করার একটি ভিডিও। হার্ডওয়্যার হলো RTX-3090 ×2 (2-way), কোয়ান্টাইজেশন ছাড়া bf16। ওমনি মডেল (S2S, এন্ড-টু-এন্ড স্পিচ-টু-স্পিচ) এর বৈশিষ্ট্য অনুযায়ী, কথোপকথনের মসৃণ প্রবাহ এবং প্রাকৃতিক আবেগ প্রকাশ অক্ষুণ্ণ থাকে। বর্তমানে এটি ইংরেজি এবং চীনা ভাষা সমর্থন করে।

ডেমো 2 — MiniCPM-o ডেমো পেজ + অডিও রেফারেন্স

এটি MiniCPM-o 4.5 এর অফিসিয়াল ডেমো পেজের একটি ফর্ক যা vllm-omni ব্যাকএন্ডের সাথে সংযুক্ত। এতে অডিও রেফারেন্স (ভয়েস ক্লোনিং) এর কার্যকারিতার উদাহরণ অন্তর্ভুক্ত করা হয়েছে। একটি WAV ফাইল আপলোড করলে, সেই কণ্ঠের টোন ও ইন্টোনেশনে প্রতিক্রিয়া সংশ্লেষিত হয়। সার্ভার-সাইডে SHA-256 কী LRU ক্যাশের মাধ্যমে একই রেফারেন্সের পুনঃগণনা এড়ানো হয়, ফলে প্রথম প্রতিক্রিয়ার পর অতিরিক্ত ওভারহেড প্রায় থাকে না।

বাস্তবায়নের সারসংক্ষেপ

তিনটি রিপোজিটরিতে কাজ করা হয়েছে।

রিপোভূমিকা
nextain/vllm-omnivllm-omni ফর্ক — MiniCPM-o 4.5 মডেল মডিউল + Thinker→Talker→Code2Wav 3-স্টেজ পাইপলাইন + ভয়েস ক্লোন (session.update.ref_audio) যোগ করা হয়েছে
nextain/MiniCPM-o-Demo-forvLLM-omniঅফিসিয়াল PyTorch ডেমোর ফর্ক — backend=vllm_omni মোড যোগ করা হয়েছে, audio-duplex পেজে vllm-omni URL সরাসরি ইনপুট/যাচাই করা সম্ভব
nextain/naia-osNaia ডেস্কটপ অ্যাপ — MiniCpmOConfig.refAudio ফার্স্ট-ক্লাস ফিল্ড যোগ করা হয়েছে, ব্রাউজার (Tauri ওয়েবভিউ) থেকে AudioContext → 16 kHz mono → base64 WAV এনকোডার

Naia ক্লায়েন্ট ডেমো গেটওয়ে ব্যবহার না করে vllm-omni এর /v1/realtime (OpenAI Realtime API এর সাথে সামঞ্জস্যপূর্ণ) এর সাথে সরাসরি সংযুক্ত। WebSocket এর মাধ্যমে PCM16 16 kHz অডিও পাঠানো হয় এবং 24 kHz mono PCM16 এ প্রতিক্রিয়া গ্রহণ করা হয়। সমস্ত কাজ Claude Code দিয়ে করা হয়েছে। মডেল কোড, স্টেজ সেটিংস YAML, stage_input_processor, ডেমো ব্যাকএন্ড প্রক্সি, Naia এর TypeScript ক্লায়েন্ট + WAV এনকোডার + vitest পর্যন্ত।

  • Naia সম্পূর্ণরূপে পুনর্গঠিত হচ্ছে। Naia-os এর কিছু অংশ naia-agent হিসেবে একটি নমনীয় CLI ব্যাকএন্ড কাঠামোতে পরিণত হবে বলে মনে হচ্ছে, এবং এটি Naia-memory এবং Naia-ADK এর সাথে একত্রিত হবে।

কিন্তু এআই স্লপ এখনও

আগের পোস্টে আমি লিখেছিলাম যে, "এই কাজের উদ্দেশ্য হলো এআই-নেটিভ ওপেনসোর্স ইকোসিস্টেমের বাস্তবায়ন, এবং এটি একটি পরীক্ষা যা দেখাতে চায় যে এআই, এআই স্লপ ছাড়াই ওপেন সোর্সে সঠিকভাবে অবদান রাখতে পারে", কিন্তু বর্তমানেও সেই অংশটি সবচেয়ে কঠিন এবং চূড়ান্ত যাচাইয়ের পর আবারও সমস্যা দেখা দিয়েছে। তবে আমি যত দ্রুত সম্ভব এটি শেয়ার করতে চেয়েছিলাম, তাই এই সমস্যা সমাধানের আগেই এই পোস্টটি লিখেছি।

গত কয়েকদিনে, আমি অন্য এআই এজেন্টকে প্রতিকূল পর্যালোচক হিসেবে ৪ বার চালিয়েছি। প্রথম ধাপে ছিল 2 BLOCKER + 13 MAJOR। এর মধ্যে একটি ছিল "উদাহরণ ক্লায়েন্ট কাজ করছে না — ব্যাকএন্ড অডিও ইনপুট ভিত্তিক হলেও টেক্সট-ড্রাইভেন হিসেবে লেখা হয়েছে" এর মতো স্পষ্ট মিথ্যা। দ্বিতীয় ধাপে 1 MAJOR (উদাহরণটি Python 3.13 থেকে সরানো stdlib audioop ব্যবহার করে)। তৃতীয় ও চতুর্থ ধাপে ক্লিন পাস। আমাদের নিয়ম (২টি ধারাবাহিক ক্লিন) পূরণ হয়েছে। কিন্তু সেখানেই না থেমে, vllm-project মেইনটেইনারের দৃষ্টিকোণ থেকে আরও একবার চালালে দেখা গেল পরিস্থিতি একই।

  • 3 BLOCKER:
    • একক মডেল কার্যকারিতার জন্য chunk_transfer_adapter.py এর ক্রস-কাটিং ইনভেরিয়েন্ট (whitelist→blacklist) পরিবর্তন
    • prompt_len_override MiniCPM-o এর জন্য নির্দিষ্ট হলেও শেয়ার্ড ইনফ্রাতে অবস্থিত
    • chat_template_kwargs.ref_audio সাইডচ্যানেল লেয়ার লঙ্ঘন — পাশে ফার্স্ট-ক্লাস ফিল্ডের পূর্ববর্তী উদাহরণ রয়েছে
  • 5 MAJOR + 8 MINOR

অভ্যন্তরীণ নিয়ম পাস করলেও, বাহ্যিক মেইনটেইনারের মানদণ্ডে প্রথম রাউন্ডে মার্জ হবে না বলে জানা গেছে। এর পাশাপাশি, upstream/main আমাদের ফর্কের মার্জ-বেসের পর আবার আপডেট হয়েছে, তাই মার্জিংয়ের কাজ অতিরিক্তভাবে চলছে।

পরবর্তী কাজ

  1. আপস্ট্রিম দৃষ্টিকোণ থেকে BLOCKER/MAJOR সংশোধন — চলছে
  2. upstream/main মার্জ + দ্বন্দ্ব সমাধান — শীঘ্রই
  3. PR জমা দেওয়া — উপরের ২টি শেষ হলে। একক PR বনাম ২টি PR বিভাজন (মডেল মডিউল / ভয়েস ক্লোন) সিদ্ধান্ত স্থগিত রয়েছে
  4. কোরিয়ান ফাইন-টিউনিং — মডেল নিজেই। CosyVoice2 (Code2Wav ব্যাকবোন) কোরিয়ান ভাষায় প্রশিক্ষিত না হওয়াই সবচেয়ে বড় বাধা। বর্তমানে কোরিয়ান টেক্সট জেনারেশন স্বাভাবিক হলেও, ভয়েস সিন্থেসিস ভেঙে শোনা যায়।

পরবর্তী কাজগুলো আবার গুছিয়ে শেয়ার করব। আমরা দেখাব যে এআইও ওপেন সোর্সে অবদান রাখতে পারে। মন্তব্য বা GitHub ইস্যু স্বাগত।


Repos

Naia: https://naia.nextain.io

Popular Posts

CC BY-NC-SA 4.0This post is licensed under CC BY-NC-SA 4.0.

মন্তব্য

সাইন ইন ছাড়াই মন্তব্য করতে পারেন

...