-
-
Notifications
You must be signed in to change notification settings - Fork 131
Malaysian Speech Instruct
We recently released Audio LLM and Speech LLM that been trained on top of https://huggingface.co/mesolitica/Malaysian-Qwen2.5-7B-Instruct,
- The model suitable for audio understanding, it is been trained on various audio classification domains, ASR, Audio translation, speaker diarization, and audio description.
- We use freezed Whisper Large V3 Encoder without any pooling, means 30 seconds audio consumed 1500 tokens or 1 token equal to 0.02 seconds.
- Projection, Embedding and LM Head layers are done in full parameter finetuning.
- LoRA for other linear layers with rank 64 and alpha 128.
- Training done in multipacking with 8192 context length.
- The model is slightly better compared to Qwen2 Audio Base on certain dataset.
- List of dataset inside model card.
- The model suitable for speech instructions, it is been trained on actual conversations related to coding, politics, chat assistant and general QA.
- We use freezed Whisper Large V3 Encoder without any pooling, means 30 seconds audio consumed 1500 tokens or 1 token equal to 0.02 seconds.
- Projection, Embedding and LM Head layers are done in full parameter finetuning.
- LoRA for other linear layers with rank 64 and alpha 128.
- Training done in multipacking with 10240 context length.
- This model with reasoning prompt is slightly better compared to gpt-4o-audio-preview-2025-06-03 on certain categories from Speech MalayMMLU.
- List of dataset inside model card.
All audio examples can get at https://github.com/mesolitica/malaya-speech/tree/master/speech/speech-instructions
from transformers import AutoProcessor, AutoModel
from transformers import TextStreamer
import librosa
import torch
model = AutoModel.from_pretrained(
'mesolitica/Malaysian-Qwen2.5-7B-Speech-Instruct',
torch_dtype = 'auto',
trust_remote_code = True,
)
_ = model.cuda()
processor = AutoProcessor.from_pretrained(
'mesolitica/Malaysian-Qwen2.5-7B-Speech-Instruct',
trust_remote_code = True,
)
conversation = [
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/kemiskinan.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
kemiskinan-1.mp4
Walaupun pertumbuhan dan pembangunan ekonomi Malaysia yang ketara sejak beberapa dekad yang lalu, kemiskinan kekal sebagai isu penting di negara ini. Menurut Bank Dunia, pada tahun 2016, kira-kira 5.6% daripada penduduk Malaysia hidup di bawah garis kemiskinan negara, ditakrifkan sebagai berpendapatan kurang daripada RM980 (kira-kira USD 240) sebulan.
Terdapat beberapa faktor yang menyumbang kepada kadar kemiskinan yang tinggi di Malaysia:
1. Ketidaksamaan pendapatan: Walaupun KDNK Malaysia telah berkembang secara berterusan dalam beberapa tahun kebelakangan ini, faedah pertumbuhan tidak diagihkan sama rata. Ketidaksamaan pendapatan antara orang kaya dan miskin adalah tinggi, dengan pekali Gini yang mengukur tahap ketidaksamaan sekitar 0.4.
2. Kemahiran terkurang dan pencarian kerja bergaji rendah: Ramai individu yang mengalami kemiskinan mempunyai tahap kemahiran dan pendidikan yang rendah, mengehadkan prospek mereka untuk mencari pekerjaan bertauliah atau maju dalam pasaran buruh. Ini sering membawa kepada pemilihan pekerjaan bergaji rendah dan gaji tetap yang jauh lebih rendah daripada yang boleh disediakan oleh industri atau perniagaan tertentu.
3. Kos sara hidup tinggi: Harga barangan dan perkhidmatan seperti pengangkutan, makanan dan penjagaan kesihatan semakin meningkat, memberi tekanan tambahan kepada isi rumah berpendapatan rendah. Tidak percaya bahawa taraf hidup yang baik boleh dicapai tanpa peluang pendidikan dan latihan kerja yang betul serta dasar sokongan sosial untuk melindungi penerima komuniti terpinggir.
4. Isu wilayah: Terdapat jurang kemiskinan yang besar antara negeri bandar dan luar bandar di Malaysia. Dalam banyak kes, infrastruktur, sistem pendidikan dan peluang pekerjaan yang tersedia di kawasan bandar amat lemah, menghalang mobiliti kemajuan bagi komuniti luar bandar dan terpinggir.
5. Pelaksanaan program perlindungan sosial yang tidak cekap: Walaupun kerajaan Malaysia telah melaksanakan pelbagai program sosial, masih terdapat cabaran yang ketara dari segi capaian dan kecekapan. Program ini kadangkala mengalami masalah penyampaian yang tidak berkesan, termasuk halangan birokrasi, rasuah, dan penyalahgunaan dana awam.
Adalah penting untuk ambil perhatian bahawa usaha sedang dibuat untuk menangani isu kemiskinan di Malaysia. Kerajaan telah melaksanakan langkah-langkah seperti Dasar Anti-Kemiskinan Nasional (NAP), Perintah Percukaian Inklusif, dan Program Rumah Pertama saya. Walau bagaimanapun, walaupun inisiatif ini menjadi lebih luas, kedua-dua jumlah dan celik kemiskinan akan terus menjadi cabaran penting. Untuk menangani isu-isu ini dengan lebih lanjut, ia adalah penting bagi Malaysia untuk mengimbangi aspek sosio-ekonominya dengan teliti, termasuk menangani ketidaksamaan pendapatan, meningkatkan pelaburan pendidikan dan modal insan, dan menyelaraskan perkongsian sumber dan sumber.
conversation = [
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/manglish-1.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
manglish-1.mp4
The "us vs them" mentality in Malaysia is a complex issue that has been perpetuated by various factors such as political rhetoric, media coverage, and societal norms. To move past this mindset, it's important to foster an environment of open communication, understanding, and mutual respect among different ethnic groups.
Here are some steps that could be taken:
1. Promote intercultural dialogue: Encourage opportunities for people from different backgrounds to come together and engage in conversations about their cultures, religions, and languages. This can help break down stereotypes and promote empathy.
2. Increase representation in media: Ensure that diverse voices are represented in the media, including television, radio, newspapers, and social media platforms. This can help challenge negative portrayals of other ethnic groups and promote positive representations.
3. Support education initiatives: Implement programs that teach students about the history and contributions of all Malaysian ethnic groups. This can help foster a sense of pride and appreciation for diversity.
4. Encourage civic engagement: Engage Malaysians in community-based projects that require collaboration between different ethnic groups. This can help build trust and solidarity.
5. Address systemic inequalities: Work towards addressing economic disparities and ensuring equal access to resources and opportunities for all Malaysian citizens.
Statistics show that Malaysia remains one of the most racially divided countries in Asia, with significant income inequality and job segregation based on ethnicity. According to data from the World Bank, the top 20% of households earn over six times more than the bottom 40%. In addition, studies have shown that Malaysian employers tend to hire candidates from their own racial group or religion.
Therefore, moving past the "us vs them" mentality requires concerted efforts from all stakeholders - government, civil society, and individual Malaysians themselves. By working towards greater understanding, inclusivity, and equality, we can create a more harmonious and prosperous society for everyone.
You can add long context in the first chat,
# https://www.malaysiakini.com/news/746518
context = """
Menteri Kewangan II Datuk Seri Amir Hamzah Azizan akan memberi penerangan dan penjelasan lanjut berhubung pelaksanaan semakan kadar Cukai Jualan dan peluasan skop Cukai Perkhidmatan secara bersasar.
Jurucakap Kerajaan MADANI yang juga Menteri Komunikasi Datuk Fahmi Fadzil berkata beliau dimaklumkan yang penjelasan mengenai perkara tersebut akan dibuat melalui sidang media atau kenyataan rasminya.
Fahmi berkata kerajaan sentiasa mengambil pandangan serius terhadap maklum balas yang diberikan berhubung semakan percukaian yang bakal dilaksanakan itu.
“Seperti yang umum sedia maklum, apa yang dikutip melalui hasil ini akan disalurkan untuk pembinaan seperti sekolah dan hospital,” katanya pada sidang media mingguan di sini hari ini.
Pada 9 Jun, Amir Hamzah berkata kerajaan akan melaksanakan semakan kadar Cukai Jualan dan peluasan skop Cukai Perkhidmatan secara bersasar berkuat kuasa 1 Julai ini selaras dengan pengumuman Belanjawan 2025 pada Oktober tahun lepas bagi mengukuhkan kedudukan fiskal negara dengan meningkatkan hasil dan meluaskan asas percukaian tanpa membebankan rakyat terbanyak.
Kadar Cukai Jualan kekal tidak berubah bagi barangan keperluan manakala kadar sama ada lima atau 10 peratus akan dikenakan ke atas barangan yang tidak penting atau mengikut budi bicara.
Skop Cukai Perkhidmatan akan diperluaskan merangkumi enam perkhidmatan baharu seperti penyewaan atau pajakan, pembinaan, kewangan, penjagaan kesihatan swasta, pendidikan dan kecantikan.
"""
conversation = [
{"role": "user", "content": [
{"type": "text", "text": context},
{"type": "audio", "audio_url": 'speech/first-user.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
first-user.mp4
First turn output,
Penjelasan mengenai semakan kadar Cukai Jualan dan peluasan skop Cukai Perkhidmatan akan diberikan oleh Menteri Kewangan II, Datuk Seri Amir Hamzah Azizan dalam sidang media atau kenyataan rasmi beliau.
After that use first turn output,
conversation = [
{"role": "user", "content": [
{"type": "text", "text": context},
{"type": "audio", "audio_url": 'speech/first-user.mp3'},
]},
{'role': 'assistant', 'content': output},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/second-user.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output2 = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output2)
second-user.mp4
Second turn output,
Duit cukai ini akan digunakan untuk membina institusi awam seperti sekolah dan hospital, serta membiayai projek-projek lain yang mendorong kemajuan ekonomi dan sosial negara. Ia merupakan sumbangan kita sebagai warganegara Malaysia kepada pemulihan dan pertumbuhan negara kita. Adakah anda ingin tahu lebih lanjut tentang bagaimana wang itu digunakan? Saya boleh cuba mencari maklumat tambahan jika anda berminat.
A specific system prompt to make sure the model always reply short, suitable to convert the outputs into speech. We are going to reuse the same audio kemiskinan.mp3
and manglish-1.mp3
,
conversation = [
{'role': 'system', 'content': 'You are a helpful voice assistant chatbot. Always reply with short, clear answers under 300 characters. Speak naturally, like in conversation. Keep it direct, no fluff, no long explanations. If youre unsure, ask a quick clarifying question.'},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/kemiskinan.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
kemiskinan-1.mp4
Malaysia has reduced poverty significantly but still faces challenges due to ethnic disparities, rural-urban divide, education gaps, and income inequality. Government efforts include cash transfers, skill development programs, and minimum wage policies to address these issues.
conversation = [
{'role': 'system', 'content': 'You are a helpful voice assistant chatbot. Always reply with short, clear answers under 300 characters. Speak naturally, like in conversation. Keep it direct, no fluff, no long explanations. If youre unsure, ask a quick clarifying question.'},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/manglish-1.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
manglish-1.mp4
Untuk berbincang tentang budaya, agama dan bahasa di Malaysia tanpa menggunakan istilah "kita mereka", kita boleh fokus pada pemeliharaan warisan budaya, promosi dialog antara agama, sokongan literasi inklusif, pengiktirafan identiti minoriti, dan pendidikan perpaduan.
You also can use the system prompt in multi-turn.
Right now the voice assistant mode only respond less than 300 characters, we are going to make it more flexible in the future.
conversation = [
{'role': 'system', 'content': 'Always reply in english, You are a helpful voice assistant chatbot. Always reply with short, clear answers under 300 characters. Speak naturally, like in conversation. Keep it direct, no fluff, no long explanations. If youre unsure, ask a quick clarifying question.'},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/graduan.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
graduan-1.mp4
Malaysia's education system faces issues like limited English proficiency, outdated curriculum, poor academic performance compared to peers, brain drain, and lack of soft skills training. These challenges hinder graduates' competitiveness globally despite the country's diversity.
conversation = [
{'role': 'system', 'content': 'Always reply in malay, You are a helpful voice assistant chatbot. Always reply with short, clear answers under 300 characters. Speak naturally, like in conversation. Keep it direct, no fluff, no long explanations. If youre unsure, ask a quick clarifying question.'},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/budaya.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
budaya-1.mp4
Untuk meningkatkan pengajaran warisan budaya di sekolah Malaysia, gunakan pendekatan interaktif, buat bahan yang lebih menarik, libatkan masyarakat tempatan, dan tingkatkan sokongan kepada guru-guru tersebut. Ini akan membantu membangunkan pemahaman pelajar tentang warisan budaya negara kita.
conversation = [
{'role': 'system', 'content': 'Always reply in manglish'},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/kemiskinan.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
Wah, Malaysia damn rich already lah! GDP per capita is around $11,923. But still got so many people poor-poor one leh. How come like dat?
First thing ah, GDP not same as life quality one. Economic growth does not always make everything better for everybody lor.
World Bank say in 2016, about 5.6% of Malaysian population living below poverty line. Means they earn less than RM2,120 a month (about USD497) one. Whole country only 0.8% live under poverty level lah.
Why still so many poor people? Got few reasons:
1. Rich-get-richer problem lah: Top 20% of family own more than half the wealth sia.
2. Different places different luck: Rural areas and eastern part of Peninsular Malaysia very poor compared to cities liao.
3. Education and skills also matter: Those who study well and know how to use computer can get good job one.
4. Government help sometimes not enough: Poor families need more assistance la.
Malaysia trying to fix this by doing these things:
1. Making sure everyone can go school and learn until high level
2. Trying to change economy to create jobs for those that need it most
3. Building affordable houses and food shops everywhere
Statistics confirm all this problems really there lah. If you don't believe me, check out World Bank report or Department of Statistics website. They will tell you exactly what's going on.
conversation = [
{'role': 'system', 'content': 'Always reply in mandarin, You are a helpful voice assistant chatbot. Always reply with short, clear answers under 300 characters. Speak naturally, like in conversation. Keep it direct, no fluff, no long explanations. If youre unsure, ask a quick clarifying question.'},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/perpecahan.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
perpecahan-1.mp4
马来西亚政府强调种族和宗教身份,以维护国家稳定和政治平衡。一些人认为这限制了个人自由和社会融合。需要更 inklusif 的政策来确保所有群体平等参与社会发展。
If you have multiple choice or open question and you want to get reason tracing,
conversation = [
{'role': 'system', 'content': 'You are going to enter reasoning mode, first you try to think step-by-step after that give the final answer.'},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/mallm-2.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
mallm-2-1.mp4
Perbuatan syirik jali merujuk kepada tindakan menyeru atau berdoa pada selain Allah SWT dengan harapan atau keyakinan bahawa mereka dapat memberikan perlindungan, pertolongan atau keredaan. Ini adalah perbuatan yang sangat tercela dan dilarang dalam agama Islam.
Dalam konteks soalan ini, saya akan menganalisis setiap pilihan jawapan untuk memahami hubungannya dengan akibat perbuatan syirik jali:
Pilihan A - Rosak akidah:
Akidah merujuk kepada kepercayaan tentang ajaran-ajaran utama dalam agama Islam. Syirik jali secara langsung melanggar salah satu prinsip asas iman, iaitu percaya kepada ketuhanan Allah sahaja tanpa sebarang perkongsian kuasa-Nya dengan makhluk lain. Oleh itu, syirik jali boleh menyebabkan robohnya keseluruhan sistem keimanan seseorang.
Pilihan B - Berdosa besar:
Syirik jali dianggap sebagai dosa besar kerana ia bertentangan langsung dengan ajaran Nabi Muhammad SAW dan membawa risiko penghalau dari rahmat Allah SWT. Menurut hadis-hadis Rasulullah, seperti yang diriwayatkan oleh Abu Hurairah RA, "Barangsiapa menyembah selain Allah, maka tiada lagi baginya kekalahan" (Riwayat Ahmad).
Pilihan C - Jadi murtad:
Murtad bermaksud meninggalkan iman dan mengenal pasti diri sendiri sebagai bukan Muslim. Dalam hal ini, syirik jali tidak secara langsung menjadi dasar bagi seseorang untuk dinamakan sebagai murtad jika dia masih menjaga aspek-aspek lain dari iman tersebut. Walau bagaimanapun, amalan ini tetap sangat serius dan harus dilakukan hanya selepas matlamat tertentu yang dibenarkan atau berguna bagi umat Islam.
Pilihan D - Mendapat azab di akhirat:
Menurut ajaran Islam, orang-orang yang melakukan syirik jali akan mendapat balasan di akhirat. Mereka akan diproses dan dikhuatiri oleh Allah SWT atas segala taatik syirik mereka, serta diserahkan hak mereka untuk memilih mana-mana malaikat sebagai wali. Kesimpulan ini datang daripada nas-nas al-Quran dan riwayat Nabi kita yang turut menerangkan tentang ancaman syirik kepada kehidupan abadi.
Selepas analisis setiap pilihan, jawapan yang paling sesuai dengan akibat utama bagi perbuatan syirik jali adalah Pilihan A - Rosak akidah. Akidah merupakan intipati iman yang sangat penting dalam Islam, dan pelanggaran syirik jali sudah tentunya mempengaruhi struktur akidah seseorang sehingga menyebabkan robohnya keyakinan tersebut.
Walau bagaimanapun, semua pilihan ini juga berkait rapat antara satu sama lain kerana akibat perbuatan syirik jali adalah saling berkait dan kompleks. Namun begitu, dalam konteks soalan ini, Akidah (pilihan A) dianggap sebagai akibat pokok dari perbuatan syirik jali.
Oleh itu, jawapan yang betul untuk soalan ini adalah $boxed{A}$.
Reasoning support open question, multiple choice question, translation, dialect translation, mathematics, science and Maktabah Al-Bakri.
Longer respond is kinda alternative to reasoning, you do not want reasoning but you want to get better and deeper answer.
conversation = [
{'role': 'system', 'content': 'You are a deeply knowledgeable and articulate AI assistant. Your task is to deliver comprehensive, in-depth, and precise responses to user queries. Present information in a logical, structured manner, using headings, lists, and examples where helpful. Strive for completeness, thoroughly address all aspects of each question. Avoid oversimplification, and aim for clarity without sacrificing depth.'},
{"role": "user", "content": [
{"type": "audio", "audio_url": 'speech/coding-pca-pytorch.mp3'},
]},
]
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
ele['audio_url'],
sr=processor.feature_extractor.sampling_rate)[0]
)
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True).to('cuda')
inputs['input_features'] = inputs['input_features'].to(model.dtype)
with torch.no_grad():
generate_kwargs = dict(
**inputs,
max_new_tokens=2048,
top_p=0.95,
top_k=50,
temperature=0.9,
do_sample=True,
repetition_penalty=1.05,
)
generation_output = model.generate(**generate_kwargs)
generate_ids = generation_output[:, inputs.input_ids.size(1):]
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
coding-pca-pytorch-1.mp4
Pengurangan dimensi (dimensionality reduction) adalah teknik penting dalam analisis data yang membantu mengurangkan bilangan ciri atau atribut sambil mengekalkan maklumat utama dari dataset asal. Dalam konteks pemprosesan imej menggunakan PyTorch, ini sering digunakan untuk memudahkan model pembelajaran mendalam tanpa kehilangan terlalu banyak informasi.
PyTorch merupakan kerangka pembinaan model neural network yang popular dan memberikan fleksibiliti tinggi kepada pengguna untuk membuat rangkaian neural dengan struktur sendiri. Teknik Pengurangan Dimensi seperti Principal Component Analysis (PCA) boleh dilaksanakan di atas PyTorch untuk tujuan berikut:
### Langkah-langkah Untuk Melakukan Pengurangan Dimensi Menggunakan PyTorch
#### 1. **Import Perpustakaan yang Diperlukan**
Sebelum melakukan apa-apa operasi pada PyTorch, pastikan anda telah mengimport semua perpustakaan yang diperlukan:
```python
import torch
import numpy as np
from sklearn.decomposition import PCA # Dari scikit-learn untuk melakukan PCA sebagai contoh tambahan.
```
#### 2. **Load Data Imej**
Muatkan dataset imej yang ingin dikurangkan dimensinya. Ini biasanya melibatkan proses membaca fail gambar, konversi ke bentuk array NumPy atau Tensor, dan normalisasi jika diperlukan.
Contoh kod muatan:
```python
# Anggap kita mempunyai fungsi load_image() yang menjadualkan imej menjadi tensor PyTorch dan sebenarnya tidak berkaitan langsung dengan PyTorch.
images = [load_image(filename) for filename in image_filenames]
inputs = torch.stack(images).float() / 255.0 # Normalisasi nilai piksel antara 0 hingga 1.
```
#### 3. **Transformasi Ke Numpy Array Jika Ada Kepentingan**
Walaupun PyTorch direka khusus untuk bekerja dengan Tensor, kadang-kadang mungkin lebih mudah untuk melakukan operasi tertentu pada format NumPy. Oleh itu, transformasi Tensor menjadi NumPy array boleh berguna sebelum aplikasi PCA.
Kod Transformasi:
```python
np_inputs = inputs.numpy()
```
#### 4. **Gunakan SkLearn untuk PCA (Jika Tidak ada Fungsionaliti Built-in dalam PyTorch)**
SkLearn menyediakan pelbagai algoritma termasuk PCA yang sangat sesuai untuk tujuan ini. Walau bagaimanapun, PyTorch juga menyertakan beberapa fungsionaliti statiskal yang lain seperti `torch.nn.utils.prune` atau penyelesaian khusus kepada masalah pengurangan dimensi.
Melakukan PCA dengan SkLearn:
```python
pca = PCA(n_components=50) # Contoh mengurangkan jumlah komponen utama kepada 50 daripada jumlah semula jadi.
reduced_data = pca.fit_transform(np_inputs)
```
#### 5. **Transformasi Balik ke Format Tensor**
Setelah data diproses oleh PCA, ia harus ditransformasikan kembali menjadi Tensor PyTorch supaya dapat diproses secara selanjutnya dalam rangkaian neural.
Proses Transformasi Semula:
```python
pytorch_reduced_data = torch.from_numpy(reduced_data)
```
#### 6. **Integrasi Dengan Model Neural Network**
Akhirnya, hasil daripada pengurangan dimensi boleh dimasukkan ke dalam model neural network anda sebagai input baru. Pastikan saiz output setiap lapisan seiring dengan data yang dihasilkan selepas pengurangan dimensi.
Contoh Integrasi:
```python
class MyModel(torch.nn.Module):
def __init__(self):
super(MyModel, self).__init__()
self.fc1 = torch.nn.Linear(50, 128) # Contoh linear layer with 50 features from reduced data.
self.fc2 = torch.nn.Linear(128, num_classes) # Output layer based on your classification/regression task.
def forward(self, x):
out = self.fc1(x)
out = F.relu(out)
out = self.fc2(out)
return out
model = MyModel()
```
Dalam kes ini, `num_classes` akan bergantung pada tugas prediksion anda - sama ada klasifikasi biner/multi-class atau regresi.
Sila ambil perhatian bahawa contoh di atas hanya merujuk kepada cara-cara umum dan praktikal. Bergantung pada skema kerja spesifik projek anda, anda mungkin perlu menyesuaikan langkah-langkah tersebut agar sesuai dengan keperluan pemprosesan data dan latihan model anda. Selain itu, pentadbiran cache GPU (`cuda`) juga perlu dipertimbangkan jika anda sedang bekerja dengan dataset besar dan memori GPU yang tersedia cukup.
You can use this fork to serve the model in vLLM, https://github.com/mesolitica/vllm-llmaudio
git clone https://github.com/mesolitica/vllm-llmaudio
cd vllm-llmaudio
wget https://wheels.vllm.ai/b6553be1bc75f046b00046a4ad7576364d03c835/vllm-1.0.0.dev-cp38-abi3-manylinux1_x86_64.whl
export VLLM_USE_PRECOMPILED=1
export VLLM_PRECOMPILED_WHEEL_LOCATION="vllm-1.0.0.dev-cp38-abi3-manylinux1_x86_64.whl"
pip3 install -e .
vllm serve "mesolitica/Malaysian-Qwen2.5-7B-Speech-Instruct" --hf_overrides '{"architectures": ["LLMAudioForConditionalGeneration"]}' --trust-remote-code
To start is very simple,
import base64
from openai import OpenAI
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8001/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
with open('speech/kemiskinan.mp3', 'rb') as fopen:
audio_base64 = base64.b64encode(fopen.read()).decode('utf-8')
model = 'mesolitica/Malaysian-Qwen2.5-7B-Speech-Instruct'
chat_completion_from_base64 = client.chat.completions.create(
messages=[{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": audio_base64,
"format": "mp3"
},
},
{
"type": "text",
"text": "explain the audio"
},
],
}],
model=model,
max_completion_tokens=1024,
temperature=0.6,
top_p=0.9,
)
Output,
ChatCompletion(id='chatcmpl-da66988137c340b2a599788e59cd51e3', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='Malaysia telah mencapai kemajuan yang ketara dalam mengurangkan kemiskinan sejak beberapa dekad yang lalu, tetapi masih terdapat sebilangan besar orang yang hidup dalam kemiskinan. Menurut Bank Dunia, pada 2016, 0.6% daripada penduduk Malaysia hidup di bawah garis kemiskinan negara, yang ditakrifkan sebagai pendapatan bulanan sebanyak RM2,200 (kira-kira USD 520). Walau bagaimanapun, ini adalah peningkatan ketara daripada kadar kemiskinan 15.8% pada tahun 1970.\n\nWalaupun kadar kemiskinan ini agak rendah, Malaysia masih mempunyai masalah yang ketara dengan ketidaksamaan pendapatan. Menurut Bank Dunia, pekali Gini Malaysia, ukuran ketidaksamaan pendapatan, ialah 0.41 pada 2019, yang agak tinggi berbanding negara lain di rantau ini. Ini menunjukkan bahawa walaupun Malaysia telah berjaya mengurangkan kemiskinan secara keseluruhan, faedah pertumbuhan ekonomi tidak diagihkan sama rata, dan masih terdapat sebilangan besar orang yang hidup dalam kemiskinan.\n\nTerdapat beberapa sebab mengapa kemiskinan berterusan di Malaysia walaupun negara itu menjadi salah satu yang paling kaya di Asia Tenggara. Ini termasuk:\n\n1. Ketidaksamaan pendapatan: Seperti yang dinyatakan sebelum ini, Malaysia mempunyai tahap ketidaksamaan pendapatan yang agak tinggi. Ini bermakna sebahagian besar kekayaan negara tertumpu di tangan sebilangan kecil orang, manakala ramai yang lain hidup dalam kemiskinan.\n2. Pendidikan dan kemahiran: Terdapat korelasi yang kuat antara tahap pendidikan dan tahap pendapatan. Di Malaysia, terdapat jurang yang ketara dalam akses kepada pendidikan berkualiti antara bandar dan luar bandar, serta antara kumpulan sosio-ekonomi yang berbeza. Ini bermakna ramai orang tidak mempunyai kemahiran atau pendidikan yang diperlukan untuk mendapatkan pekerjaan yang membayar dengan baik, yang boleh mengekalkan kemiskinan.\n3. Geografi dan infrastruktur: Sesetengah kawasan di Malaysia, terutamanya di kawasan luar bandar dan terpencil, mempunyai akses terhad kepada perkhidmatan asas seperti elektrik, air bersih dan pengangkutan. Ini boleh menyukarkan orang yang tinggal di kawasan ini untuk mengakses pasaran dan peluang ekonomi, yang membawa kepada kemiskinan.\n4. Diskriminasi dan peminggiran: Terdapat juga isu diskriminasi dan peminggiran dalam masyarakat Malaysia, terutamanya terhadap kumpulan etnik dan agama tertentu. Ini boleh mengehadkan peluang ekonomi dan mengekalkan kemiskinan.\n\nUntuk menangani kemiskinan di Malaysia, kerajaan telah melaksanakan pelbagai program dan dasar, termasuk program pemindahan tunai, latihan kemahiran dan program pembangunan komuniti. Walau bagaimanapun, lebih banyak perlu dilakukan untuk menangani punca kemiskinan, seperti ketidaksamaan pendapatan dan diskriminasi, dan untuk memastikan faedah pertumbuhan ekonomi diagihkan dengan lebih saksama.', refusal=None, role='assistant', annotations=None, audio=None, function_call=None, tool_calls=[], reasoning_content=None), stop_reason=None)], created=1750399729, model='mesolitica/Malaysian-Qwen2.5-7B-Speech-Instruct', object='chat.completion', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=856, prompt_tokens=597, total_tokens=1453, completion_tokens_details=None, prompt_tokens_details=None), prompt_logprobs=None, kv_transfer_params=None)