1. ภาพรวมของโมเดลเสียง

1.1. การแนะนำเกี่ยวกับโมเดล TTS และ STT ของ OpenAI

โมเดลการแปลงข้อความเป็นเสียง (TTS)

โมเดล TTS ของ OpenAI สามารถแปลงข้อมูลข้อความเป็นเสียงออกมาได้ กระบวนการนี้รวมถึงการวิเคราะห์ข้อความ การประยุกต์ใช้อัลกอริทึมการสังเคราะห์เสียง และการปรับปรุงคุณภาพของเสียง มันทำให้คอมพิวเตอร์สามารถอ่านข้อความทุกรูปแบบ ทำให้เนื้อหามีความเข้าใจและสามารถเข้าถึงได้ง่ายขึ้น โมเดล TTS เป็นเทคโนโลยีที่สำคัญสำหรับผู้ทุพพลภาพทางสายตา พนักงานขับรถ หรือผู้ที่ต้องการรับข้อมูลผ่านทางการฟัง

โมเดลการแปลงเสียงเป็นข้อความ (STT)

ในการตอบรับ TTS โมเดล STT สามารถแปลงข้อมูลเสียงเป็นข้อความ ขณะทำงานกับข้อมูลเสียงเข้าทางต้นทาง ระบบ STT จะทำการตรวจจับเสียงก่อน ตามด้วยการสกัดลักษณะเฉพาะของเสียงออกมา จากนั้นจะแปลงสัญญาณเสียงเป็นคำศัพท์โดยใช้โมเดลทั้งสัญญาณเสียงและภาษา ซึ่งสุดท้ายแล้วจะสร้างเอาต์พุตของข้อความออกมา เทคโนโลยี STT ใช้กันอย่างแพร่หลายในการรับรู้เสียงการระบุคำและสร้างคำบรรยายแบบสดเทียนในขณะเดียวกัน

1.2. สถานการณ์การใช้งาน

  • การอ่านบล็อกออกเสียง
  • การสร้างเสียงหลากหลายภาษา

3. การใช้งาน API ในการแปลงข้อความเป็นเสียง

3.1. การเริ่มต้นอย่างรวดเร็ว

ในส่วนนี้ เราจะมาแสดงตัวอย่างการแปลงข้อความเป็นเสียงออกมาโดยใช้คำสั่ง curl และไคลเอ็นต์ Python ไม่ว่าคุณจะเป็นนักพัฒนาหรือผู้ใช้ที่ไม่มีความรู้ด้านเทคนิค คุณสามารถสร้างไฟล์เสียงได้อย่างง่ายดายโดยเพียงแค่ส่งคำขอ API

การส่งคำขอผ่าน Curl

ในการสร้างเสียงโดยใช้เครื่องมือสายคำสั่ง curl คุณสามารถทำตามขั้นตอนต่อไปนี้:

  1. ตรวจสอบว่า curl ได้ถูกติดตั้งบนระบบของคุณและว่าคุณมีคีย์ API ที่ถูกต้อง
  2. ใช้คำสั่ง curl ต่อไปนี้เพื่อแปลงข้อความเป็นเสียง:
curl https://api.openai.com/v1/audio/speech \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-1",
    "input": "Today is a great day to build products people love!",
    "voice": "alloy"
  }' \
  --output speech.mp3

ในคำสั่งข้างต้น $OPENAI_API_KEY แทนด้วยคีย์ API ของคุณ ฟิลด์ input คือข้อความที่คุณต้องการแปลง ฟิลด์ model ระบุโมเดลเสียงที่ให้ใช้ และพารามิเตอร์ voice เลือกเสียง เราเลือกใช้เสียงโลหะระบุเสียง alloy ที่นี่ ตัวเลือก --output ระบุชื่อและรูปแบบของไฟล์ออกพุต

การใช้ Python Client

หากคุณต้องการใช้งานภาษาโปรแกรม Python คุณสามารถใช้ตัวอย่างโค้ดต่อไปนี้:

from openai import OpenAI

client = OpenAI()

response = client.audio.speech.create(
    model="tts-1",
    voice="alloy",
    input="Today is a great day to build products people love!"
)

response.stream_to_file("output.mp3")

ในช็อตโค้ดนี้ เราเริ่มต้นโดยการนำเข้าไลบรารี openai และสร้างอินสแตนซ์ของไคลเอนต์ OpenAI จากนั่นเราใช้วิธี audio.speech.create ในการส่งคำขอ โดยระบุโมเดลเสียง เสียง และข้อความที่ต้องการแปลง ในที่สุดเราใช้วิธี stream_to_file เพื่อบันทึกสตรีมเสียงที่สร้างไว้ในไฟล์

3.2. เลือกคุณภาพเสียงและเสียงที่เหมาะสม

การเลือกคุณภาพเสียงและเสียงที่เหมาะสมสำหรับโครงการของคุณเป็นขั้นตอนที่สำคัญในการรับประสบการณ์ผู้ใช้ที่ดีที่สุด ไอพีของเรามีวิธีเลือกสองตัวเลือกรุ่น เสียงที่มีคุณภาพต่ำ กระชับกับที่ทำให้เหมาะสำหรับการใช้งานเรียลไทม์ แต่มีคุณภาพเสียงที่ต่ำลงอย่างสัมพันธ์ และอีกอันคือ tts-1-hd ที่มีคุณภาพเสียงที่ดีที่สุดเหมาะสำหรับการใช้งานที่ไม่ใช่เรียลไทม์ในการสร้างเสียงที่มีคุณภาพสูง นอกจากนี้ ไอพีของ OpenAI TTS API ยังมีตัวเลือกเสียงที่หลากหลายเช่น

  • Alloy
  • Echo
  • Fable
  • Onyx
  • Nova
  • Shimmer โดยขึ้นอยู่กับข้อกำหนดโปรเจกต์และกลุ่มเป้าหมายของคุณ คุณสามารถทดลองตัวอย่างเสียงต่าง ๆ ให้เลือกเสียงที่เหมาะสมที่สุด คำนึงถึงปัจจัยเช่น สไตล์พูด อัตราการพูด และการแสดงอารมณ์เพื่อหาเสียงที่สามารถสื่อถึงอารมณ์และความพิถีพิถันอย่างเหมาะสม

3.3. รูปแบบและภาษาที่รองรับ

API ของ OpenAI TTS มีการตั้งค่าเริ่มต้นใช้รูปแบบออกพุตเป็น MP3 แต่ยังรองรับรูปแบบเสียงอื่น ๆ หลายรูปแบบเช่น

  • Opus: เหมาะสำหรับการสตรีมมิงและการสื่อสารผ่านอินเตอร์เน็ต ที่มีการละเลยในการเดินเวลา
  • AAC: ใช้สำหรับการบีบอัดข้อมูลเสียงหมุนตรวจเป็นรูปแบบที่ชุตรูปที่รับการตั้งค่าไว้
  • FLAC: รูปแบบการบีบอัดเสียงที่ไม่สูญเสียที่บุรุษโดยนักสนับหูและผู้รักษาไว้ให้เหมาะสมในการเก็บไว้ใช้

เรื่องภาษา ไอพีของเราโดยส่วนใหญ่จะทำตามโมเดล Whisper ซึ่งมีการเลือกภาษาแบ่งแยกในระดับประเทศหลายประเทศ

3.4. ฟังก์ชันการสตรีมเสียงแบบเรียลไทม์

เพื่อตอบสนองต่อความต้องการของแอปพลิเคชันแบบเรียลไทม์ ไอ้พีไอของเรามีการสนับสนุนสำหรับฟังก์ชันการสตรีมเสียงแบบเรียลไทม์ ด้านล่างนี้คือตัวอย่าง Python สำหรับการดำเนินการสตรีมเสียงแบบเรียลไทม์:

from openai import OpenAI

client = OpenAI()

response = client.audio.speech.create(
    model="tts-1",
    voice="alloy",
    input="สวัสดีโลก! นี่คือการทดสอบการสตรีม",
)

response.stream_to_file("output.mp3")

4. อปีเอพีสำหรับแปลงเสียงเป็นข้อความ

4.1. แนะนำการใช้งานเบื้องต้น

ในส่วนนี้ เราจะแนะนำความสามารถของ API ของ OpenAI สำหรับแปลงเสียงเป็นข้อความ

ต้องการ API key ที่ถูกต้องและเตรียมไฟล์เสียงก่อนที่จะเริ่ม

คุณสามารถใช้คำสั่ง curl เพื่อส่งคำขอ POST ที่มีไฟล์เสียงอยู่ แทน OPENAI_API_KEY ด้วย API key ของคุณ และตั้งค่าที่อยู่ของไฟล์ได้ที่

curl --request POST \
  --url https://api.openai.com/v1/audio/transcriptions \
  --header 'Authorization: Bearer OPENAI_API_KEY' \
  --header 'Content-Type: multipart/form-data' \
  --form file=@/path/to/your/audio/file.mp3 \
  --form model=whisper-1

หลังจากที่ทำคำสั่งดังกล่าว คุณจะได้รับการตอบรับที่มีรูปแบบ JSON ที่บอกข้อมูลข้อความที่ถูกแปลเป็นข้อความ

ตัวอย่างเช่น:

{
  "text": "มองฝันเกี่ยวกับความคิดที่ห่างเหินที่สุดซื่อ และคุณอยากรู้อยากเห็นว่ามันจะขยายขึ้นเป็นสิ่งที่ใหญ่ขนาด 100, 1,000 ครั้ง ..."
}

4.2. รูปแบบและขนาดไฟล์ที่รองรับ

API นี้สนับสนุนรูปแบบไฟล์เสียงที่ทั่วไป เพื่อตอบสนองต่อความต้องการในสถานการณ์ต่าง ๆ รูปแบบไฟล์ที่รองรับรวมถึงแต่ไม่จำกัดเพียง mp3, mp4, mpeg, mpga, m4a, wav, webm เป็นต้น ซึ่งทำให้ผู้ใช้สามารถประมวลผลไฟล์เสียงจากแหล่งต่าง ๆ ได้โดยง่าย

สำหรับขนาดของไฟล์ ขณะนี้ API นี้มีขีดจำกัดที่ไม่เกิน 25MB นั่นหมายความว่าหากไฟล์เสียงของคุณมีขนาดใหญ่กว่า 25MB คุณจะต้องแบ่งเป็นช่วงที่น้อยกว่า 25MB หรือใช้รูปแบบการบีบอัดที่มีประสิทธิภาพมากขึ้น ตัวอย่างเช่น mp3 และ opus โดยทั่วไปจะช่วยในการบีบอัดที่มีประสิทธิภาพ เพื่อลดขนาดไฟล์โดยไม่สูญเสียคุณภาพเสียงมากนัก

หากคุณพบไฟล์ที่มีขนาดมากกว่า 25MB คุณสามารถพิจารณาใช้ไลบรารี PyDub ใน Python เพื่อแบ่งไฟล์เสียงของคุณ:

from pydub import AudioSegment

audio_file = AudioSegment.from_file("your_large_audio_file.mp3")

interval = 10 * 60 * 1000  # 10 นาที

chunks = make_chunks(audio_file, interval)

for i, chunk in enumerate(chunks):
    chunk_name = f"audio_chunk{i}.mp3"
    chunk.export(chunk_name, format="mp3")

ในโค้ดข้างต้น make_chunks จะแบ่งไฟล์เสียงขนาดใหญ่เป็นช่วงเสียงหลายช่วงที่มีระยะเวลา 10 นาที ช่วงเหล่านี้อยู่ภายในขีดจำกัดขนาดไฟล์ที่ต้องการโดย API และสามารถอัปโหลดแยกออกไปที่ API ของ OpenAI เพื่อทำการแปลงเป็นข้อความ

โปรดทราบว่า ขณะที่ PyDub ให้เรามีวิธีที่ง่ายสำหรับการจัดการไฟล์เสียง แต่ก็ยังแนะนำให้คุณใส่ความสำคัญเพิ่มเติมในเรื่องความปลอดภัยและความมั่นคงของซอฟต์แวร์ข้างที่เสมอของบุคคลที่สาม ไอ้พีไอไม่รับประกันการทำงานของซอฟต์แวร์ข้างที่ จากภายนอก